Django URLConf - url()函数 - 可以省略吗?

时间:2014-05-02 22:48:56

标签: django django-urls urlconf

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

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

就像这个:

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

那么,在第一种编码方式中使用url()函数的效用是什么?

1 个答案:

答案 0 :(得分: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已经注意到hereurlpatterns已被弃用(请参阅Deprecate 'prefix' arg to django.conf.urls.patterns票证和此pull request)。如果没有urlpatterns,我们就必须在网址列表的每个项目上明确调用url()。最好养成使用它的习惯。