所以,假设我有一个django应用,需要回复这样的网址:http://127.0.0.1:8000/food%20log/4/up/。原始参数是“食物日志”,但当它包含在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”实际上是“食物日志”,这样它就会认出它是有效的吗?
基本上我想在urlpatterns执行之前对字符串进行预处理,但我不知道如何/在何处执行此操作。感谢您的帮助。
答案 0 :(得分:1)
根据re module的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),