我有一个表单,我需要用户选择他们的时区。我有一个下拉菜单,可以在其中选择他们的国家/地区,我希望能够填充该国家/地区的可能时区作为下拉列表供用户选择。
例如:用户选择墨西哥,我将时区显示为
'America/Mexico_City',
'America/Cancun',
'America/Merida',
'America/Monterrey',
'America/Matamoros',
'America/Mazatlan',
'America/Chihuahua',
'America/Ojinaga',
'America/Hermosillo',
'America/Tijuana',
'America/Santa_Isabel',
'America/Bahia_Banderas'
用户将能够选择其中一个供我处理。做到这一点的最佳方法是什么?
我正在使用 Django 框架,并将使用 js 填充下拉列表。
在 Python 中,您可以使用 pytz 库获取每个国家/地区代码的时区地图:
>>> pytz.country_timezones
<pytz._CountryTimezoneDict at 0x7f0c3c215d68>
要将其作为 Python 字典获取:
>>> dict(pytz.country_timezones)
{'AD': ['Europe/Andorra'],
'AE': ['Asia/Dubai'],
'AF': ['Asia/Kabul'],
'AG': ['America/Antigua'],
'AI': ['America/Anguilla'],
'AL': ['Europe/Tirane'],
'AM': ['Asia/Yerevan'],
'AO': ['Africa/Luanda'],
'AQ': ['Antarctica/McMurdo',
'Antarctica/Casey',
'Antarctica/Davis',
'Antarctica/DumontDUrville',
'Antarctica/Mawson',
'Antarctica/Palmer',
'Antarctica/Rothera',
'Antarctica/Syowa',
'Antarctica/Troll',
'Antarctica/Vostok'],
...
'YT': ['Indian/Mayotte'],
'ZA': ['Africa/Johannesburg'],
'ZM': ['Africa/Lusaka'],
'ZW': ['Africa/Harare']}
然后你可以用JSONify它并将其添加到你的Django模板中:
timezone_map = dict(pytz.country_timezones)
timezone_json = json.dumps(timezone_map)
# Add timezone_json to your view's template context
在JS端,您可以按如下方式阅读它以填充下拉列表:
let timezoneMap = {{ timezone_json }};
timezoneMap['MX']
// Returns ["America/Mexico_City", "America/Cancun", "America/Merida", "America/Monterrey", "America/Matamoros", "America/Mazatlan", "America/Chihuahua", "America/Ojinaga", "America/Hermosillo", "America/Tijuana", "America/Bahia_Banderas"]
如果你想从你的JS中获取这些信息并且不介意添加一个依赖项,我会说时区时刻的扩展.js时区可能会做你想要的,但我自己从来没有用过它。