99d*_*han 13 python regex django django-urls
django中以下两个url模式有什么区别?
url(r'^$', views.indexView, name='index'),
url(r'', include('registration.urls'))
Run Code Online (Sandbox Code Playgroud)
据我所知,'^ $'和''引用一个空字符串.'^ $'和''实际指定了什么?
Rah*_*pta 27
在正则表达式中,^并且$是特殊字符.
^ (尖):
^ 匹配字符串的开头.
让我说我的正则表达式^a,然后正则表达式将a在字符串的开头寻找:
'a' # Matches 'a' in 'a'
'abc' # Matches 'a' in 'abc'
'def' # Not match because 'a' was not at the beginning
Run Code Online (Sandbox Code Playgroud)
$ (美元符号):
$ 匹配字符串的结尾.
如果我的正则表达式是b$,那么它将b在字符串的末尾匹配:
'b' # Matches 'b' in 'b'
'ab' # Matches 'b' in 'ab'
'abc' # Does not match
Run Code Online (Sandbox Code Playgroud)
使用r'^$':
使用两者^和$一起^$将匹配空行/字符串.
url(r'^$', views.indexView, name='index')
Run Code Online (Sandbox Code Playgroud)
当Django遇到一个空字符串时,它将转到该index页面.
使用r'':
当您使用时r'',Django将在URL中的任何位置查找空字符串,这对于每个URL都是如此.
所以,如果你的urlpattern是这样的:
url(r'', views.indexView, name='index')
Run Code Online (Sandbox Code Playgroud)
您的所有网址都会转到index页面.
^$ 意味着开始和结束之间没有任何东西...... 这只匹配空字符串
''表示一个空字符串(但没有指定任何关于整个字符串的开头或结尾的内容)所以当你遇到字符串中的任何内容时,它会说匹配'asdasd'例如在开头有一个匹配的空字符串...剩下的是通过的到新的url规则脚本(在这种情况下,一切都保留)
如果相反,你的第二个规则就是'a'匹配第一个a asdasd并传递sdasd给新的url匹配规则集
免责声明,这可能是一个粗略的过度简化,但基本上是正确的