我刚刚发现以下代码给出了相同的结果:
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
)
就像这个:
urlpatterns = patterns('',
(r'^admin/', include(admin.site.urls)),
)
那么,在第一种编码方式中使用url()函数的效用是什么?
答案 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已经注意到here,urlpatterns
已被弃用(请参阅Deprecate 'prefix' arg to django.conf.urls.patterns票证和此pull request)。如果没有urlpatterns
,我们就必须在网址列表的每个项目上明确调用url()
。最好养成使用它的习惯。