Django url正则表达式没有得到匹配

时间:2014-01-13 08:37:46

标签: regex django django-urls

我需要匹配url中的url编码空格,即%20。

我的网址就像是

http://domain/something/hello%20world

这是我的网址配置和视图

url(r'^regtest/(\w+[%20]?\w+)', views.regView)

查看:

   def regView(request, x, y=None):                                      
    print x, 'and', y                                              
    return HttpResponse('+OK')  

以下是我从网址获得点击时的日志

http://127.0.0.1:8000/regtest/hello%20world

hello and None
[13/Jan/2014 02:12:31] "GET /regtest/hello%20world HTTP/1.1" 200 3

1 个答案:

答案 0 :(得分:1)

模式[%20]匹配%20

使用以下正则表达式来匹配单词字符(\w)或(|),%20

r'^regtest/((?:\w|%20)+)'

>>> import re
>>> matched = re.search(r'regtest/((?:\w|%20)+)', 'regtest/hello%20world')
>>> matched.group(1)
'hello%20world'

<强>更新

%20由Django解释并解码为空格()。因此,您应该匹配空格而不是%20

r'^regtest/([\w\s]+)'