url djang中“^$”和“”之间的差异

2024-05-19 07:58:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在django中,下面两种url模式有什么区别?

url(r'^$', views.indexView, name='index'),

url(r'', include('registration.urls'))

据我所知,“^$”和“”都指空字符串。“^$”和“”实际上指定了什么?


Tags: django字符串nameurlindexinclude模式registration
3条回答

^$-它指定URL字符串的起点和终点。

''-URL方法中的空字符串表示,如果遇到URL模式中未定义的任何其他URL模式,则应调用相应的空字符串视图

在正则表达式中,^$是特殊字符。

^(插入符号):

^匹配字符串的开头。

假设我的regex是^a,那么regex将在字符串的开头查找a

'a'    # Matches 'a' in 'a'  
'abc'  # Matches 'a' in 'abc'
'def'  # Not match because 'a' was not at the beginning 

$(美元符号):

$匹配字符串的结尾。

如果我的regex是b$,那么它将匹配字符串末尾的b

'b'     # Matches 'b' in 'b'
'ab'    # Matches 'b' in 'ab'
'abc'   # Does not match 

使用r'^$'

同时使用^$作为^$匹配空行/字符串。

url(r'^$', views.indexView, name='index')

当Django遇到空字符串时,它将转到index页面。

使用r''

当您使用r''时,Django将在URL中的任何位置查找空字符串,这对每个URL都是正确的。

如果你的urlpattern是这样的:

url(r'', views.indexView, name='index')

所有URL都将转到index页。

^$表示开始和结束之间没有任何内容。。。此项仅与空字符串匹配

''表示空字符串(但不指定整个字符串的开头或结尾),因此当您在字符串中遇到与'asdasd'匹配的任何内容时,它会说很好,例如在开头有匹配的空字符串。。。剩余的将传递给新的url规则脚本(在本例中,所有内容都将保留)

如果您的第二个规则是'a',那么它将匹配asdasd中的第一个a,并将sdasd传递给新的url匹配规则集

否认这可能是一个严重的过分简单化,但基本上是正确的

相关问题 更多 >

    热门问题