在我正在开发的 Flask 应用程序中,我使用美国州名作为 url 结构的一部分。州名称是从 python 字典中提取的,该字典将州缩写与其各自的专有名称链接起来,例如
state_dict = {"Alabama" : "AL", "Alaska" : "AK",...
当状态名称没有空格时这很好。例如http://example.com/Alabama/
然而,当相关状态中有空格时,它会形成一个糟糕的 url。例如http://example.com/North%20Dakota/
目前,当我使用州名称创建网址时要小心,以使用类似的内容来解决这个问题state=state.replace(' ', '_')
作为一个论点url_for()
。然而,它很麻烦并且看起来很粗糙。
如何更好地使用状态名称作为 url 的一部分,而不必每次都手动修改它们?如果该解决方案还可以用于将大写字母更改为小写,则加分。
我考虑过将状态字典修改为 url 友好的,例如north_dakota
代替North Dakota
但是,在创建要显示给用户的文本时也会使用字典,并且可读性很重要。
非常感谢你花时间陪伴!
Python 最常见的模式是使用一对字典进行正向/反向查找,以往返于您的友好字典中。附带说明一下,通常用于表示字符串值的“url 友好”的术语是“slug”。
# state_slugs lets you lookup either state name or code => its slug
state_slugs = {}
# states_from_slugs lets you lookup the slug => the state name
states_from_slugs = {}
for state_name, state_code in state_dict.items():
slug = state_name.lower().replace(' ', '_')
state_slugs[state_name] = slug
state_slugs[state_code] = slug
states_from_slugs[slug] = state_name
您可以将其放在只运行一次的地方,例如可能在模块级别,或者在您运行之后不久state_dict
已经被创造了。
然后访问state_slugs['NC']
or state_slugs['North Carolina']
都将返回“north_carolina”并访问states_from_slugs['north_carolina']
将返回“北卡罗来纳州”进行反向查找。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)