我做了一个这样的 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')
因此,当您加载页面时,它会显示选项。我选择了选项,按提交,它说“这不是一个有效的选择”并且它会清空选择字段。
然后当你刷新页面时,就好像代码被破坏了,它不再显示选择...这是一个空的下拉/选择字段。
我做错了什么?
编辑:出于某种原因,当您将 iteritems 放在 View 而不是表单中时,一切正常。 Flask-WTF 的某种怪癖,如果你不使用他们的格式,它似乎会在你提交表单后删除选择。
最佳答案
也许问题在于您在 dict 中的键是字符串。我以前遇到过这个问题,所以也许这样的事情会有所帮助:
typeone = SelectField("Question1", coerce=str, choices=QUESTION_LIST['QuestionOne'])
这个强制
东西帮了大忙。发生了什么 我认为所有 POST 数据都是 unicode 并且默认情况下 coerce
也等于 unicode(至少在 WTF 形式中,如果您使用 Flask-WTF 扩展,则需要检查)。你的选择键是字符串。
关于python - flask-wtf selectField 选择无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14186412/