我想按字母顺序创建一个美国各州的下拉列表。我已经将一组状态转换为OrderedDict,并将其输入到WTForms SelectField中。
import collections
import wtforms
STATE_ABBREV = ('AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA',
'HI', 'ID', 'IL', 'IN', 'IO', 'KS', 'KY', 'LA', 'ME', 'MD',
'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ',
'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC',
'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY')
def list_to_ordered_pairs(input_list):
ordered_pairs = collections.OrderedDict()
for item in input_list:
ordered_pairs[item] = item
return ordered_pairs
state_pairs = list_to_ordered_pairs(STATE_ABBREV)
class MyForm(wtforms.Form):
state = wtforms.SelectField(label='State', choices=state_pairs)
我的问题是生成的下拉菜单只显示每个州的第二个字母。。。
我该怎么把它修好以显示正确的两个字母的名称?有没有更好的方法来吸引不同的地理区域?
这里有几个问题:
您的列表不是一个50元组的列表。
如果你想要一个列表,它看起来像:
我不相信你的
state_pairs
是你认为的那种配对。它们是这样的一对我相信
state_pair
你想要的会是这样的:解决您看到的问题的方法是去掉方法
list_to_ordere_pair
,只需创建一个state_pairs
列表WTForms文档要求choices属性是(值、标签)对的序列。我错误地将其视为键值对,并试图使用字典。这个简单的列表理解可以做到。。。
相关问题 更多 >
编程相关推荐