我在用烧瓶:
这是我的表格:
from flask.ext.wtf import Form, TextField
class BookNewForm(Form):
name = TextField('Name')
这是控制器:
@book.route('/book/new', methods=['GET', 'POST'])
def customers_new():
form = BookNewForm()
if form.is_submitted():
print "submitted"
if form.validate():
print "valid"
if form.validate_on_submit():
flash("Successfully created a new book")
return redirect(url_for('.books_show'))
return render_template('views/books_new.html', form=form)
现在的问题是,如果你看我的print语句,它总是打印提交的,但它从不打印有效的,validate_on_submit()也从不执行。为什么?
在模板html文件中的标记后插入此项:
可以打印错误
或者
如果出现csrf错误,则应在模板中设置form.csrf_token。
您没有在HTML表单中插入CSRF字段。
将
form.csrf_token
添加到模板(docs)后,表单将按预期进行验证。验证表单后添加
print(form.errors)
以查看引发的错误。errors
将在验证前为空。在这种情况下,有一个关于丢失的错误I created an example on GitHub.
相关问题 更多 >
编程相关推荐