0

所以,假设我有一个 django 应用程序需要响应这样的网址:http: //127.0.0.1 :8000/food%20log/4/up/ 。原始参数是“food log”,但在包含在 url 中时需要将空格替换为 %20。现在该链接已被点击,它又回到了 urls.py。

urlpatterns = patterns('',
(r'^(?P<content_type>\w+)/(?P<object_id>\d+)/(?P<direction>up|down|clear)/$', process_vote),

... )

因此,它似乎无法正确识别参数。这是在想要使用其中有空格的 content_type 之前的功能代码。如果我们暂时假设我不能在整个系统的其余部分中从该 content_type 的名称中删除空格,我如何让 urlpatterns 函数识别“food%20log”实际上是“food log”,以便它将其识别为有效?

基本上我想在它被 urlpatterns 操作之前对字符串进行预处理,但我不知道如何/在哪里这样做。感谢您的任何帮助。

4

1 回答 1

1

根据re 模块的 Python 手册:

未指定 LOCALE 和 UNICODE 标志时,匹配任何字母数字字符和下划线;这等价于集合 [a-zA-Z0-9_]。使用 LOCALE,它将匹配集合 [0-9_] 加上当前语言环境中定义为字母数字的任何字符。如果设置了 UNICODE,这将匹配字符 [0-9_] 加上 Unicode 字符属性数据库中分类为字母数字的任何内容。

因此,除了 \w 之外,可能还包括正则表达式中的空格。

urlpatterns = patterns('',
(r'^(?P<content_type>[\w ]+)/(?P<object_id>\d+)/(?P<direction>up|down|clear)/$',     process_vote),
于 2011-09-01T19:36:44.667 回答