Python Flask引导quick_form认为从render_模板传入的表单未定义
我正在尝试使用Flask BootstrapPython Flask引导quick_form认为从render_模板传入的表单未定义,python,flask,flask-wtforms,jinja2,Python,Flask,Flask Wtforms,Jinja2,我正在尝试使用Flask Bootstrapquick\u form呈现WTF表单。但是,我得到一个错误,即表单未定义,即使我使用呈现模板传递它。为什么这不起作用 File "/home/eron/anaconda/lib/python2.7/site-packages/flask_bootstrap/templates/bootstrap/wtf.html", line 190, in template {{ form.hidden_tag() }} File "/home/eron
quick\u form
呈现WTF表单。但是,我得到一个错误,即表单
未定义,即使我使用呈现模板
传递它。为什么这不起作用
File "/home/eron/anaconda/lib/python2.7/site-packages/flask_bootstrap/templates/bootstrap/wtf.html", line 190, in template
{{ form.hidden_tag() }}
File "/home/eron/anaconda/lib/python2.7/site-packages/jinja2/environment.py", line 397, in getattr
return getattr(obj, attribute)
UndefinedError: 'form' is undefined
{%extends“bootstrap/base.html”%}
{%import“bootstrap/wtf.html”作为wtf%}
{{wtf.quick_form(form)}
您写道:类名表单(表单):
然后
返回渲染模板('base.html',form=form)
首先尝试将form=form
更改为form=form
如果这不起作用,请尝试删除form=NameForm()
,然后重试。删除
{%import“bootstrap/wtf.html”作为wtf%}从div标签中导入,并将其放在末尾这个答案已经晚了将近2年,但我遇到了类似的问题,我想与大家分享一下。 您可以将“表单”更改为“博客表单”。Jinja似乎与您从Flask WTF导入的“表单”模块相混淆:
from flask.ext.wtf import Form
您只需将变量名更改为“form”以外的其他名称,例如“blogform”:
@app.route('/base', methods=['GET','POST'])
def index():
name = None
blogform = NameForm()
if blogform.validate_on_submit():
name = blogform.name.data
session['name'] = blogform.name.data
return redirect(url_for('base'))
return render_template('base.html', blogform=blogform)
由于在render_模板中传递的变量现在更改为blogform,因此在HTML文件中,也相应地更改它:
{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
<div class="col-md-3">
{{ wtf.quick_form(blogform) }}
</div>
{%extends“bootstrap/base.html”%}
{%import“bootstrap/wtf.html”作为wtf%}
{{wtf.quick_form(blogform)}
这背后的逻辑是什么?这意味着我将传递类而不是对象本身,不是吗?
{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
<div class="col-md-3">
{{ wtf.quick_form(blogform) }}
</div>