【发布时间】:2013-05-24 17:23:21
【问题描述】:
我在提交包含动态填充的 SelectField 的表单时遇到问题。由于某种原因,当 Flask 尝试验证 CSRF 令牌时,当 SelectField 在表单中时它总是失败。当我从表单中删除 SelectField 时,它会成功验证 CSRF 令牌。
有人遇到过这种行为吗?
编辑
表格:
class AddToReportForm(Form):
selectReportField = SelectField(u'Reports',choices=[('test1','test')])
def __init__(self, *args, **kwargs):
"""
Initiates a new user form object
:param args: Python default
:param kwargs: Python default
"""
Form.__init__(self, *args, **kwargs)
def validate(self,id_list):
rv = Form.validate(self)
if not rv:
print False
#Check for the CSRF Token, if it's not there abort.
return False
print True
return True
神社2:
<form method=post name="test">
{{ form.hidden_tag()}}
{{ form.selectReportField }}
<a href="#" onclick="$(this).closest('form').submit()" class="button save">Add to report</a>
</form>
渲染:
form = AddToReportForm()
return render_template('random',title='add reports',form=form
【问题讨论】:
-
你能贴一些代码吗?
-
是的,我会做一个概念:)
-
更新了一些代码
-
你确定是 CSRF 失败而不是其他原因吗?
SelectField.choices看起来有点可疑,不应该是(value, label)元组的列表,而不仅仅是字符串吗? -
是的更新了,在我的代码中它确实是一个元组。