[解決済み】Djangoで1ページで複数のフォームを扱う適切な方法
2022-04-01 20:44:35
質問
テンプレートページに2つのフォームを用意しています。 1つのフォームを使用する場合は、この典型的な例のように、物事はうまくいきます。
if request.method == 'POST':
form = AuthorForm(request.POST,)
if form.is_valid():
form.save()
# do something.
else:
form = AuthorForm()
しかし、複数のフォームを処理したい場合、フォームのうちのひとつだけを送信し、他のフォームは送信しないことをビューに知らせるにはどうしたらよいでしょうか (つまり、request.POST はそのままで、送信されたフォームだけを処理したい)。
これが解決策です という回答から 期待されるフレーズ と 禁止語句 は異なるフォームの送信ボタンの名前であり 期待されるフレーズ と 禁止語句 がフォームです。
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')
解決方法は?
いくつかの選択肢があります。
-
2つのフォームのアクションに異なるURLを記述します。 そうすれば、2つの異なるフォームを処理するために、2つの異なるビュー関数を持つことができます。
-
POSTデータからサブミットボタンの値を読み取る。 どのサブミットボタンがクリックされたかを知ることができます。 複数の送信ボタンを持つ django フォームを作成するには?
関連
-
[解決済み】DjangoのQuerySetをリストに変換する方法とは?
-
[解決済み] Django manage.py ランサーバーが動作しない
-
django.db.utils.OperationalError の解決策です。(2003, "Can't connect to MySQL server") というエラーが発生します。
-
djangoにおけるrelated_nameの役割
-
djangoでログ出力を利用する
-
Djangoにおけるrenderとrender_to_responseの違いについて
-
[解決済み】テンプレートコード内で変数に値を設定するには?
-
[解決済み】Djangoのテンプレートにコメントを入れる方法
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み】djangoのフォームフィールドでデフォルトで空のクエリセットを作成する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コマンド 'git' が見つからない - windows
-
[解決済み] Django: TemplateSyntaxError: 余りをパースできませんでした。
-
[解決済み] Django で django-storages と boto3 を使って CreateMultipartUpload オペレーションを呼び出すと AccessDenied になります。
-
[解決済み] Django 引数 '()' とキーワード引数 '{}' を持つリバースが見つかりません。
-
Django: OperationalError そのようなテーブルがない
-
[解決済み] djangoでモデルオブジェクトを一括作成する
-
[解決済み】Djangoのクエリ - idとpkの比較
-
[解決済み】Djangoで空のクエリセットがあるかどうか確認する
-
[解決済み】Djangoのvalues_listとvaluesの比較
-
[解決済み] 複数の送信ボタンを持つ django フォームを作成するには?