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 サイトの他の関連記事を参照してください。