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

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

Susan Sarandon
リリース: 2024-11-30 03:49:18
オリジナル
911 人が閲覧しました

How to Handle Multiple Forms on a Single Django Page?

Django の単一ページで複数のフォームを処理する

単一の Django テンプレートで複数のフォームを操作する場合、どのフォームを使用するかを決定することが重要です両方のフォームが同時に処理されることを避けるために送信されています。主な課題は、POST データ内で目的のフォームを特定することにあります。

複数のフォーム オプション

この問題に対処するには、いくつかのアプローチがあります。

  • 個別の URL: 各フォームに個別の URL を割り当てます。これにより、複数のビュー関数がフォームを個別に処理することになります。
  • 送信ボタンの値: POST データ内の送信ボタンの値を調べて、どのボタンが使用されたかを判断します。

解決策の例

1 つに 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')
ログイン後にコピー

この例では、送信ボタンの値について POST データをチェックします。値に基づいて、対応するフォームをインスタンス化し、保存しようとします。プレフィックスにより、送信されたデータがフォームに正しくバインドされるようになります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート