我想做的是,一旦用户提交了所有的结果,我希望它根据我的过滤器更新Fixture_预测模型。虽然我得到的是400个错误的请求。日志不能告诉我出什么问题。有什么想法吗?在
我认为这和通过表单提交的元组数据有关。。。在
表单显示良好,就在我提交表单时,它直接指向一个错误的请求。在
我的错误
Bad Request
The browser (or proxy) sent a request that this server could not understand.
我目前拥有的:
视图
^{pr2}$模板
{% extends "base.html" %}
{% block content %}
<h1>Predictions</h1>
<p></p>
<p>Please make your predictions here</p>
<form action='' method='post'>
{{form.predictions()}}
<p><input type="submit" value="Submit Predictions"></p>
</form>
{% endblock %}
表格
class PredictionForm(WTForm):
fixture_id = fields.IntegerField(validators=[validators.required()])
stage = fields.TextField(validators=[validators.required()])
home_team = fields.TextField(validators=[validators.required()])
home_score = fields.IntegerField(validators=[validators.required()])
away_score = fields.IntegerField(validators=[validators.required()])
away_team = fields.TextField(validators=[validators.required()])
class PredictionListForm(WTForm):
predictions = FieldList(FormField(PredictionForm))
根据flask docs,当:
听起来wtform正在访问一个不在multidict中的键,从而引发keyerror。要测试这一点,请用try/except包装validate调用。(我想,我假设这就是keyerror发生的地方)。如果你抓住了例外,你就会得到答案。在
问题是
request.form
中没有fixture_id
字段。这就导致了一个KeyError
被底层的多重字典所提升,而这个多重字典被烧瓶翻译成400。在没有},这两个字段都会更改提供给WTForms的名称以避免冲突。在
fixture_id
的原因是您使用的是字段附件FieldList
和{解决方法是简单地使用
form
实例来访问数据(因为WTForms已经为您映射了它):相关问题 更多 >
编程相关推荐