我正在努力修改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'
为什么?
答案 0 :(得分:0)
我可以假设您在模板中随机出现 form.username 。也许不是现在而是另一个。这是一个错误 Jinja 来寻找模板。我们将看到该文件指定解释器并查看它。遗憾的是,这里没有完整的代码而且难以理解。
同样暗示与问题无关:检查请求POST:
if request.method == 'POST' and form.validate():