【问题标题】:jinja2.exceptions.UndefinedError with flaskjinja2.exceptions.UndefinedError 与烧瓶
【发布时间】:2016-02-03 17:13:53
【问题描述】:

我正在修改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来处理表单,在forms/user.py中我发现:

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

还有一个看起来像这样的“路线”模型:

@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'

为什么?

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    我可以假设你在模板的某个地方随机指定了 form.username。也许不是当前,而是另一个。这是 Jinja 寻找模板的错误。我们将查看文件指定解释器的内容并查看它。在这里,遗憾的是代码不完整,难以理解。

    还提示与问题无关:检查请求 POST:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      相关资源
      最近更新 更多