ホームページ  >  記事  >  バックエンド開発  >  単一の Django ビューで複数のフォームを処理するにはどうすればよいですか?

単一の Django ビューで複数のフォームを処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-18 22:24:02706ブラウズ

How to Handle Multiple Forms in a Single Django View?

Django での複数のフォームの処理

Django では、単一のページで複数のフォームを処理することが課題となる場合があります。このシナリオに取り組むための 2 つの実行可能なアプローチを検討してみましょう。

アプローチ 1: フォームの個別の URL

各フォームに個別の URL を割り当てます。これにより、送信を処理する別のビュー関数が発生します。この方法の利点は、そのシンプルさとコード構成にあります。

アプローチ 2: 送信ボタンの値を活用する

フォームを同じページに保持したい場合は、次のようにします。送信ボタンの値に基づいてそれらを区別できます。次のコード スニペットは、このアプローチを示しています。

if request.method == 'POST':
    if 'bannedphrase' in request.POST:
        bannedphraseform = BannedPhraseForm(request.POST, prefix='banned')
        if bannedphraseform.is_valid():
            bannedphraseform.save()
        expectedphraseform = ExpectedPhraseForm(prefix='expected')
    elif 'expectedphrase' in request.POST:
        expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected')
        if expectedphraseform.is_valid():
            expectedphraseform.save()
        bannedphraseform = BannedPhraseForm(prefix='banned')
else:
    bannedphraseform = BannedPhraseForm(prefix='banned')
    expectedphraseform = ExpectedPhraseForm(prefix='expected')

このコードでは、bandphrase と Expectedphrase は送信ボタンの名前であり、bandphraseform と Expectedphraseform は対応するフォームです。リクエストの POST データにこれらのボタンが存在するかどうかを確認することで、どのフォームが送信されたかを特定し、それに応じて処理できます。

以上が単一の Django ビューで複数のフォームを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。