【发布时间】:2014-10-02 03:27:09
【问题描述】:
我有一个 Django 应用程序,我在 urls.py 中有如下一行:
url(r'^piece/(?P<pk>[0-9a-zA-Z]+)/$', 'piece', name="piece-detail"),
我想不区分大小写地匹配pk ID,也就是说,用户输入A123 还是a123 都无关紧要。
我想到的一个解决方案是在视图中捕获 404 异常,根据需要将 pk 转换为大写并重试。但是,我不确定这是个好主意。一方面,它为多个规范 URL 留下了可能性。
有没有办法将匹配 (?P<pk>[0-9a-z]+) 的 URL 重定向到具有等效大写字符的 URL?
【问题讨论】:
-
你的正则表达式的那部分匹配不区分大小写,但你可以尝试使用
(?P<pk>[^\W_]+) -
你不会隐藏视图顶部的案例吗?
-
@hwnd 如果我理解得很好,我认为他想不区分大小写地匹配捕获组名称
-
不清楚,因为
[0-9a-zA-Z]+两者都匹配..
标签: regex django django-urls