2

我刚刚发现以下代码给出了相同的结果:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
)

作为这个:

urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
)

那么,在第一种编码方式中使用 url() 函数有什么用处呢?

4

1 回答 1

2

目前这两个选项本质上是相同的,因为在第二种情况下,为每个元组Django应用url()函数。引用django.conf.url.patterns源代码:

def patterns(prefix, *args):
    ...
    pattern_list = []
    for t in args:
        if isinstance(t, (list, tuple)):  # < HERE
            t = url(prefix=prefix, *t)
        elif isinstance(t, RegexURLPattern):
            t.add_prefix(prefix)
        pattern_list.append(t)
    return pattern_list

此外,正如@Kevin Christopher Henry 已经在此处指出的那样,urlpatterns它正在被弃用(请参阅弃用 'prefix' arg to django.conf.urls.patterns票证和此拉取请求)。如果没有urlpatterns,我们将不得不显式调用url()url 列表的每个项目。最好养成使用它的习惯。

于 2014-05-02T22:52:59.990 回答