首先,我是 Python 和 Flask 的新手,所以如果我的问题很愚蠢,我很抱歉。尽管我尝试搜索解答,但我从未找到过(这应该是一个“简单”的答案)。
我想在我的网站上添加一个联系页面,所以我找到了这个教程,然后按照它的步骤进行操作。一切都很好,直到表单验证的时候。我只使用Required,但是form.validate()总是返回 false。如果我不改动代码,并且将表单类中的每一个 Required 都移除,那么就能正常工作,form.validate() 返回 true。
我真的不明白为什么,我看了很多人说要使用validate_on_submit(),但是如果我使用它,就会出现错误:*'ClassName' object has no attribute 'validate_on_submit'*。
以下是代码相关部分:
Index.py
@app.route('/contact', methods=['GET','POST'])
def contact():
form = ContactForm()
if request.method == 'POST':
if form.validate() == False:
flash('All Fields are required.')
return render_template('contact.html', form=form)
else:
return 'Form posted'
elif request.method == 'GET':
return render_template('contact.html', form=form)
forms.py
from wtforms import Form, TextField, TextAreaField, SubmitField, validators,ValidationError
class ContactForm(Form):
name = TextField("Name", [validators.Required()])
email = TextField("Email")
subject = TextField("Subject")
message = TextAreaField("Message")
submit = SubmitField("Send")
联系我们.html
<div id="contact">
{% for message in get_flashed_messages() %}
<div class="flash">{{ message }}</div>
{% endfor %}
<form action="{{ url_for('contact') }}" method=post>
{{ form.name.label }}
{{ form.name }}
{{ form.email.label }}
{{ form.email }}
{{ form.subject.label }}
{{ form.subject }}
{{ form.message.label }}
{{ form.message }}
{{ form.submit }}
</form>
</div>
即使在姓名字段中填写了内容,我也从未收到“表单已提交”的字符串。
提前致谢。