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

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

Linda Hamilton
リリース: 2024-11-28 19:43:12
オリジナル
449 人が閲覧しました

How to Handle Multiple Forms on a Single Page in Django?

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

Django で単一ページで複数のフォームを処理するには、慎重な考慮が必要です。以下に例を示すように、単一のフォームを処理するための一般的なアプローチ

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.
else:
    form = AuthorForm()
ログイン後にコピー

は、複数のフォームを処理する場合には不適切になります。このシナリオに適切に対処するには、ビューでどのフォームが送信されたかを判断する必要があります。

フォーム送信の区別

1 つの方法は、各フォームに固有の送信ボタンの値を含めることです。 POST データを解析することで、ビューはクリックされた送信ボタンを識別し、対応するフォームを処理できます。

送信ボタンの値を使用した実装

たとえば、送信ボタンを持つ Expectedphraseform と Bannedphraseform という名前の 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')
ログイン後にコピー

一意の送信ボタンの値を利用することで、ビューはフォームの送信を効果的に区別し、それに応じて目的のフォームを処理できます。

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

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