wtforms、CSRF、烧瓶、FieldList [英] wtforms, CSRF, flask, FieldList
问题描述
在将 FieldList
与 WTForms 一起使用时,我无法通过验证.我不断收到此错误.{'csrf_token': [u'CSRF 令牌丢失']}
.问题是如果我在 FieldList
字段中没有任何要验证的数据,则验证通过并且没有问题.但是当我尝试使用任何数据验证表单时,我收到该错误.
这是我的表格:
class FilterForm(wtf.Form):filter_value = wtf.TextField('Value', validators=[validators.Required()])filter_operator = wtf.SelectField('Operator', validators=[validators.Required()])filter_compare_value=wtf.TextField('比较值',validators=[validators.Required()])类重定向表单(wtf.Form):redirect_id = wtf.HiddenField('id')redirect_name = wtf.TextField('Name', validators=[validators.Required()])redirect_url = wtf.TextField('URL', validators=[validators.Required()])redirect_type = wtf.SelectField('Type', validators=[validators.Required()])redirect_method = wtf.SelectField('Method', validators=[validators.Required()])redirect_active = wtf.BooleanField('Is Active')redirect_filters_any = wtf.FieldList(wtf.FormField(FilterForm))redirect_filters_all = wtf.FieldList(wtf.FormField(FilterForm))
表单似乎显示正确并且工作正常,直到我将数据添加到 redirect_filters_any
或 redirect_filters_all
有没有办法为 FieldList
禁用 csrf 或将 CSRF 值传递给 FieldList
?我想保持启用 CSRF 保护,但似乎无法解决此验证问题.
这是 Jinja2 模板
{% 扩展 "base.html" %}{% set active_page = "endpoints" %}{% 块 tail_script %}<script src="/static/js/page/redirects.js"></script>{% 结束块 %}{% 块内容 %}<div class="row12"><div class="span12"><ul class="面包屑"><li><a href="{{ url_for('list_endpoints') }}">端点</a><span class="divider">/</span></li><li><a href="{{ url_for('show_endpoint', id=endpoint_id) }}">{{endpoint_name}}</a><span class="divider">/</span></li>{% if redirect_id != 'new' %}{{ form.redirect_name.data }} {% 别的 %}<li class="active">新建</li>{% 万一 %}<form action="{{ url_for('edit_redirect', endpoint_id=endpoint_id, redirect_id=redirect_id) }}" class="form-horizontal" method="post"><legend>一般</legend>{{ form.hidden_tag() }}<div class="control-group {% if form.redirect_name.errors %}error{% endif %}"><div class="control-label">{{ form.redirect_name.label }}</div><div class="控件">{{ form.redirect_name|安全 }}{% if form.redirect_name.errors %}<span class="help-inline"><ul class="errors">{% for error in form.redirect_name.errors %}<li>{{ error }}</li>{% 结束为 %}</span>{% 万一 %}
<div class="control-group {% if form.redirect_type.errors %}error{% endif %}"><div class="control-label">{{ form.redirect_type.label }}</div><div class="控件">{{ form.redirect_type|安全 }}{% if form.redirect_type.errors %}<span class="help-inline"><ul class="errors">{% for error in form.redirect_type.errors %}<li>{{ error }}</li>{% 结束为 %}</span>{% 万一 %}