urls django中'^ $'和''之间的区别

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页面.


Jor*_*ley 5

^$ 意味着开始和结束之间没有任何东西...... 这只匹配空字符串

''表示一个空字符串(但没有指定任何关于整个字符串的开头或结尾的内容)所以当你遇到字符串中的任何内容时,它会说匹配'asdasd'例如在开头有一个匹配的空字符串...剩下的是通过的到新的url规则脚本(在这种情况下,一切都保留)

如果相反,你的第二个规则就是'a'匹配第一个a asdasd并传递sdasd给新的url匹配规则集

免责声明,这可能是一个粗略的过度简化,但基本上是正确的