【问题标题】:difference between '^$' and '' in urls djangodjango 中 '^$' 和 '' 的区别
【发布时间】:2015-09-12 10:33:52
【问题描述】:

django中以下两种url模式有什么区别?

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

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

据我了解,'^$' 和 '' 都指的是一个空字符串。 '^$' 和 '' 究竟是什么意思?

【问题讨论】:

标签: python regex django django-urls


【解决方案1】:

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

^(插入符号):

^ 匹配字符串的开头。

假设我的正则表达式是^a,那么正则表达式将在字符串的开头查找a

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

$(美元符号):

$ 匹配字符串的结尾。

如果我的正则表达式是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')

您的所有网址都将转到index 页面。

【讨论】:

  • r'^$'的小幅改进:如果主机名后面的url中有空字符串,它将调用indexview视图/函数。
  • "使用r'',您所有的网址都会转到索引页面。":不,这取决于r'' 模式之前的urlpatterns。如果一个匹配,它将被采取并且模式搜索将停止。
  • (使用 Django Rest):router.register(r'', viewsetname, 'views') 和 url(r'', viewsetname) 有什么区别?
  • 这是最好的解释
【解决方案2】:

^$ 表示开头和结尾之间没有任何内容...这匹配空字符串

'' 表示一个空字符串(但没有指定关于整个字符串的开头或结尾的任何内容),因此当您遇到字符串中的任何内容时,它会很好地匹配 'asdasd',例如在开始......剩下的被传递给新的 url 规则脚本(在这种情况下一切都保留)

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

免责声明这可能过于简单化了,但基本上是正确的

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      ^$ 表示你是匹配这两个特殊字符之间的字符串

      【讨论】:

        猜你喜欢
        • 2018-07-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 2018-06-18
        • 1970-01-01
        • 2015-03-26
        • 2014-07-18
        • 2020-10-03
        相关资源
        最近更新 更多