gpt4 book ai didi

python - 使用 WTForms 的长排序下拉列表

转载 作者:行者123 更新时间:2023-11-28 20:22:24 25 4
gpt4 key购买 nike

我想创建一个按字母顺序排列的美国各州的下拉列表。我已将状态元组转换为 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)

我的问题是生成的下拉菜单只显示每个州的第二个字母...

Dropdown

如何解决此问题以显示正确的两个字母名称?是否有更好的方法来吸引不同的地理区域?

最佳答案

这里有几个问题:

您的列表不是列表,它是 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)

关于python - 使用 WTForms 的长排序下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23851664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com