处理 Flask url 创建中的空格

2024-04-21

在我正在开发的 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(使用前将#替换为@)

处理 Flask url 创建中的空格 的相关文章

随机推荐

  • 如何防止 SVN 缓存单个存储库的凭据?

    我正在使用 Collabnet SVN 客户端版本 1 5 和 1 6 我的本地计算机运行的是 Windows Vista x64 我知道 确实非常悲伤 我想每次尝试在选定的存储库上执行任何颠覆操作时都强制进行身份验证 我如何将属性或设置设
  • 用于将 格式的 unicode 字符转换为其 ASCII 等效项的脚本

    我正在对 Linux 区域设置文件进行一些更改 usr share i18n locales 如 pt BR 更改日期 时间 数字等的默认格式 但是由于 unicode 字符在
  • 使用 Angular FormArray 计算值

    我正在尝试根据 FormArray 中的特定值计算总计或其他值 我发现订阅时valueChanges并尝试将整个数组传递给类似的东西reduce 新值 不存在于父 FormGroup 中 StackBlitz 上的原始示例 https st
  • 如何确定 C 中数组的大小?

    如何确定 C 中数组的大小 即数组可以容纳多少个元素 执行摘要 int a 17 size t n sizeof a sizeof a 0 完整答案 要确定数组的大小 以字节为单位 您可以使用sizeof操作员 int a 17 size
  • @ControllerAdvice 未触发

    我正在开发 Spring MVC Webflow 应用程序 版本 3 2 并尝试进行异常处理 我可以将自定义异常消息输出到日志文件和 error jsp 我遇到的问题是异常处理程序没有被解雇 我创建了以下类并对其进行了注释 Controll
  • 如何以编程方式从设置中设置默认启动器?

    我想将我的启动器设置为默认启动器 我的代码对很多人来说都可以正常工作 但在乐视设备上却无法正常工作 因为它提供了从默认应用程序设置中设置默认启动器的功能 运行此代码时 它会在默认启动器上移动 但仅在乐视设备中不显示启动器选择器弹出窗口 如何
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • 二进制到十进制转换 C 代码 - 满足特定测试用例的问题

    C程序将输入的二进制数转换为十进制数 该代码对于输入 10001000 101100 工作正常 输出分别为 136 和 44 但对于以下情况则失败 My code include
  • Cloud Firestore - 动态查询

    我有一个Collection在 Cloud Firestore 中有一定数量的项目 我们称之为Collection X 这个项目数量会不断变化 在任何给定时间 我想听一下此中的项目数Collection并创建几个whereEqualto 调
  • 在 python 中创建接口和可交换实现

    是否可以在 python 中创建一个类接口以及该接口的各种实现 示例 我想创建一个用于 pop3 访问的类 以及所有方法等 如果我使用商业组件 我想将其包装以遵守合同 将来 如果我想使用另一个组件或编写自己的代码 我希望能够交换组件而不是让
  • Jarsigner:找不到证书链

    我已将证书导入到私有证书中 keystore file keytool list Enter keystore password Keystore type JKS Keystore provider SUN Your keystore c
  • 无法安排 azure webjob

    我无法将计划的 WebJob 发布到 Azure 应用服务 我正在使用 Visual Studio 2017 使用此设置一切正常 架构 http schemastore org schemas json webjob publish set
  • 如何设置 Silverlight 4 OOB 应用程序的最小宽度和高度?

    有没有办法为我的 Silverlight 4 浏览器外应用程序设置最小宽度和高度 没有内置设置来控制窗口的最小宽度和高度 因此您需要使用代码来处理它 首先 您的 OOB 应用程序需要具有更高的信任度 然后您需要附加一个处理程序SizeCha
  • 如何在Prolog中编写cmp_list/3函数?

    Write a predicate cmp list 3 the first 2 arguments are 2 lists and the last one is Comparison which means ge lt le or gt
  • 为什么 [CSS 功能] 在 [浏览器] 中不起作用,但在其他浏览器中起作用?

    我尝试使用transition在 Firefox 15 上 它不起作用 即使它可以在其他版本的 Firefox 以及 Chrome 和 Safari 等其他浏览器上运行 当我使用 Firefox 的检查器查看属性时transition被删除
  • 如何禁用 Silverlight DataGrid 验证页脚?

    我面临以下问题 我正在使用验证摘要弹出窗口来在页面上显示错误 并且我有一个可编辑的 DataGrid 所以有2个问题 1 如果 DataGrid 单元格中出现验证错误 则 DataGrid 验证会重复验证错误 例如 DataGrid 包含
  • 使用Rvest登录网站抓取时出现403错误

    我试图在需要登录的网站上抓取页面 但不断收到 403 错误 我已经修改了我网站的这两篇文章中的代码 使用rvest或httr登录网页上的非标准表单 https stackoverflow com questions 28418770 usi
  • 获取 Sublime Text 3 上的所有范围名称

    我正在创建一个插件ST3 http www sublimetext com 并需要所有定义范围的列表 我知道打ctrl alt shift p在状态栏中显示当前范围 但我无法对每个文件扩展名执行此操作 Edit 除了简单的 tmLangua
  • 使用反向路径的 CGContextClip()

    我想在我的作品上剪下图画CGContext但我需要它只是相反 即我想使用添加几个矩形到我的剪切路径CGContextAddRect 并且剪切应该以这样的方式完成 我添加到剪切路径的所有矩形都不受任何绘图操作的影响 通常情况下 情况正好相反
  • 处理 Flask url 创建中的空格

    在我正在开发的 Flask 应用程序中 我使用美国州名作为 url 结构的一部分 州名称是从 python 字典中提取的 该字典将州缩写与其各自的专有名称链接起来 例如 state dict Alabama AL Alaska AK 当状态