【发布时间】:2014-01-21 05:07:47
【问题描述】:
首先,我是 python 和 Flask 的新手,如果我的问题很愚蠢,我很抱歉。我搜索它,但从未找到答案(我猜这应该是一个“简单”的答案)。
我想在我的网站中添加一个联系页面,我找到了this tutorial,所以我关注了它。 在表单验证之前一切正常。我只使用 Required 并且 form.validate() 总是返回 false。如果我不碰我的代码,并且我删除了表单类中的每个必需项,它就可以正常工作,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")
contact.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>
即使我在名称字段中写了一些东西,我也从未收到“已发布表单”字符串。
提前致谢,
【问题讨论】:
标签: python validation flask wtforms