27

1 つのページに、さまざまな効果を得るために送信できる複数のフォーム (さまざまなタグ) がある Django プロジェクトがあります。すべての場合において、ユーザーを同じページにリダイレクトする必要があるため、ビューでフォームを送信してから元のページにリダイレクトするパターンを使用します。少なくとも 1 つのケースでは、2 つのフォームの唯一の違いは送信ボタンの値です。

私の見解では、コードがあります(私のビュー関数がにアクセスするのはこれが初めてですrequest.POST):

if request.POST['submit']=='Add':
    #code to deal with the "Add" form

テンプレートでは、最初のフォームに次のような送信ボタンがあります

<input type="submit" value="Add">

これでうまくいくと思いましたが、そのフォームを送信すると、上から見た行でエラーが発生します。

キー「送信」が見つかりません<QueryDict: {u'clientyear': [u'2012'], u'csrfmiddlewaretoken': [u'be1f2f051f09f6ab0375fdf76cf6a4d7'], u'ben': [u'123405']}>

'submit'明らかに、これには、クリックした送信ボタンに対応する値を持つキーまたはキーがありません。では、これは機能しないため、送信ボタンの値にアクセスしたり、どのフォームが送信されたかを確認したりするにはどうすればよいでしょうか?

4

3 に答える 3

35

Submitは HTML フォーム構造です... 次のようにフォーム オブジェクトの name 属性を使用する必要があります... テンプレートで:

<form>
...
<input type="submit" name="list" value="List Objects" />
</form>
<form>
...
<input type="submit" name="do-something-else" value="Do Something Else" />
</form>

あなたの見解では:

if 'list' in request.POST:
    # do some listing...
elif 'do-something-else' in request.POST:
    # do something else
于 2012-05-15T19:10:39.913 に答える