我如何才能获得在Django的形式提交按钮的价值?(How can I access the for

2019-07-29 09:59发布

我有一个可以提交到有不同的效果一个Django项目,在一个页面上,有多种形式(在不同的标签)。 在所有的情况下,我希望用户被重定向回到同一页面,所以我在视图中使用提交表单,然后重定向到原始页面的模式。 在至少一个情况下,两个的形式之间的唯一区别是提交按钮的值。

我认为我的代码(这是第一次我的视图函数访问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'键或用对应的值提交按钮,我点击任意键。 所以,既然这是不行的,如何可以访问提交按钮的值或者告诉它的形式已经提交?

Answer 1:

Submit的HTML表单结构......必须按如下方式使用表单对象的名称属性...在你的模板:

<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


Answer 2:

有一点要记住,以防止混淆。 该name提交按钮不会显示如果只在形式单一按钮。

#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
</form>

#view.py
...
'first_button' in request.POST  #False

#template.html
<form action="..." method="post">
<input type="submit" name = "first_button" value="Add">
<input type="submit" name = "second_button" value="Remove">
</form>

#view.py
...
'first_button' in request.POST  #True if you clicked on that button


文章来源: How can I access the form submit button value in Django?