带烧瓶的jinja2.exceptions.UndefinedError

时间:2016-02-03 17:13:53

标签: python flask jinja2

我正在努力修改cookiecutter Flask应用。

我的表格如下:

      <form class="form-inline" id="registerForm"  method="POST" action="/get_email/" role="form">
          <div class="form-group">
            <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter your email address">
          </div>
          <button type="submit" class="btn btn-warning btn-lg">submitMe!</button>
        </form>

这个项目使用flask-wtf来处理表单和表单/ user.py我发现:

class EmailForm(Form):
    email = StringField('Email', validators=[DataRequired(), Email()])

和&#39;路线&#39;模型看起来像:

@blueprint.route("/get_email/", methods=['GET', 'POST'])
def get_email():
    # form = EmailForm(request.form, csrf_enabled=False)
    form = EmailForm()
    if form.validate_on_submit():
        new_user = User.create(email=form.email.data)
        flash("Thank you for registering. Please check your email to confirm signup.", 'success')
        return redirect(url_for('public.home'))
    else:
        flash_errors(form)

当我通过仅提交电子邮件测试电子邮件注册表单(上面的html)时,我得到:

jinja2.exceptions.UndefinedError

UndefinedError: 'myflaskapp.forms.user.EmailForm object' has no attribute 'username'

为什么?

1 个答案:

答案 0 :(得分:0)

我可以假设您在模板中随机出现 form.username 。也许不是现在而是另一个。这是一个错误 Jinja 来寻找模板。我们将看到该文件指定解释器并查看它。遗憾的是,这里没有完整的代码而且难以理解。

同样暗示与问题无关:检查请求POST:

if request.method == 'POST' and form.validate():