我有一个urls.py文件,其中包含如下所示的行:
urlpatterns = patterns('',
url(r'', include('my_module.urls'))
)
为什么当我将中间行更改为url(r'^$', include('my_module.urls'))
时,它不起作用?
这个正则表达式是否为相同(空白)值?
答案 0 :(得分:2)
每当Django遇到include()
(django.conf.urls.include()
)时,它会删除与该点匹配的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。但$
表示网址在此处结束,因此在$
之后没有任何内容可以删除和发送。
有关详情,请点击here
答案 1 :(得分:0)
我认为这不是Django问题,而是正则表达式问题。
r''
是一个空字符串,它匹配每个字符串。
由于^
匹配字符串的开头且$
匹配字符串的结尾,因此r'^$'
仅匹配空字符串。
>>> re.match(r'', 'abc123')
<_sre.SRE_Match object at 0x1003c4920>
>>> re.match(r'', '')
<_sre.SRE_Match object at 0x1003c4988>
>>> re.match(r'^$', 'abc123')
>>> re.match(r'^$', '')
<_sre.SRE_Match object at 0x1003c4920>