这里有几个问题:
您的列表不是列表,而是 50 元组。
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')
如果你想要一个列表,它看起来会是这样的:
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']
我不相信你的state_pairs
就你所认为的意义上来说,它们是成对的。他们是这样的一对
>>> state_pair = 'AK'
>>> abbr, state = state_pair
>>> print abbr
A
>>> print state
K
>>>
我相信state_pair
你想要的看起来像这样:
>>> state_pair = ('AK', 'Alaska')
>>> abbr, state = state_pair
>>> print abbr
AK
>>> print state
Alaska
>>>
解决您所看到的问题的方法是摆脱该方法list_to_ordere_pair
并创建一个列表state_pairs
STATE_CHOICES = [('AL', 'Alabama'),('AK','Alaska')...]
class MyForm(wtforms.Form):
state = wtforms.SelectField(label='State', choices=STATE_CHOICES)