flask-wtf selectField选项无效

Dex*_*ter 2 python dictionary flask wtforms

我做了一个像这样的SelectField:

# constants.py
QUESTION_LIST = {}
QUESTION_LIST['QuestionOne'] = { 'disagree-strong': "Strongly Disagree", 'agree-strong': "Strongly Agree" }

#forms.py
from constants import *
typeone = SelectField('QuestionOne', 
      choices=QUESTION_LIST['QuestionOne'].iteritems(), 
      description='Answer the question')
Run Code Online (Sandbox Code Playgroud)

因此,当您加载页面时,它会显示选项.我选择了这个选项,然后按"提交"并显示"这不是一个有效的选择",它会清除选择字段.

然后,当您刷新页面时,就好像代码被破坏而且它不再显示选择......这是一个空的下拉/选择字段.

我究竟做错了什么?

编辑:出于某种原因,当你把iteritems放在视图而不是表单时,一切正常.Flask-WTF的某种怪癖,如果你不使用他们的格式,它似乎在你提交表格后删除了选择.

Ign*_*nas 9

也许问题是你在dict中的键是一个字符串.我以前遇到过这个问题,所以这样的事情可能会有所帮助:

typeone = SelectField("Question1", coerce=str, choices=QUESTION_LIST['QuestionOne'])
Run Code Online (Sandbox Code Playgroud)

coerce件事有所帮助.会发生什么我认为所有POST数据都是unicode,默认情况下coerce也等于unicode(至少在WTF表单中,如果你使用的话,需要检查Flask-WTF扩展名).你的选择键是字符串.