python表单验证wtf_关于python 3.x:无法验证Flask WTF-Form

我制作了Flask WTForm,以允许用户确认一系列信息。 我显示了预先填充了信息的表单,用户可以对其进行修改并提交表单。 但是,即使没有错误发生(form.errors为空),form.validate()也总是返回False。 我究竟做错了什么?

应用程式

@app.route('/validation', methods=['GET', 'POST'])

def validation():

# initiate form

item = session.get('item', None)

form = AttrForm(request.form)

# pre-fill validation

form.price.data = item['price']

form.surface.data = item['surface']

form.rooms.data = item['rooms']

form.year.data = item['year']

# get area options and pre-fill

options = get_options()

form.subarea.choices = options

form.subarea.data = get_choice(options, item['subarea'])

# catch errors

if not form.validate_on_submit():

display = {'url': False, 'fill' : True, 'valid' : False}

return render_template('index.html', display=display, form=form)

# set new values

item['price'] = request.form['price']

item['surface'] = request.form['surface']

item['rooms'] = request.form['rooms']

item['year'] = request.form['year']

item['subarea'] = request.form['subarea']

session['item'] = item

return redirect(url_for('results'))

的HTML

{% block attr_form %}

Attribute Form

Loyer (hors charges){{ render_field(form.price) }}
Surface{{ render_field(form.surface) }}
Année de construction{{ render_field(form.year) }}
Nombre de pièces{{ render_field(form.rooms) }}
Quartier administratif{{ render_field(form.subarea) }}

{% endblock %}

帮手

{% macro render_field(field) %}

{{ field }}

{% if field.errors %}

{% for error in field.errors %}

{{ error }}

{% endfor %}

{% endif %}

{% endmacro %}

形成

class AttrForm(FlaskForm):

price = DecimalField('price', validators=[DataRequired()])

subarea = SelectField('subarea', coerce=int)

surface = DecimalField('surface', validators=[DataRequired()])

year = IntegerField('year', validators=[DataRequired()])

rooms = IntegerField('rooms', validators=[DataRequired()])

我们可以看到AttrForm类吗?

当然! 我编辑了问题。

首先,请确保在烧瓶配置中定义了SECRET_KEY。 您需要执行此操作才能使CSRF保护生效。 http://flask-wtf.readthedocs.io/en/stable/csrf.html

其次,通过插入form.hidden_tag将csrf令牌添加到html表单中。

{{ form.hidden_tag() }}

...

有关详细信息,请参见http://flask-wtf.readthedocs.io/en/stable/quickstart.html。

好吧,那是Flask友好的提醒,安全性很重要! 感谢您的提示!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值