Python Flask引导quick_form认为从render_模板传入的表单未定义

Python 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

我正在尝试使用Flask Bootstrap
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>