省略' url('在Django urlpatterns中)有什么意义

时间:2015-09-12 09:11:38

标签: python django

我已经获得了一些Django代码来接管settings.py中urlpatterns中的某些条目使用url(),而有些不在这里可以看到:

urlpatterns = patterns('',
    (r'^grappelli/', include('grappelli.urls')), 
    url(r'^admin/', include(admin.site.urls)),
    (r'^movies/', include('movies.urls')),
    (r'^profile/', include('userprofile.urls')),
    (r'^api/', include(v1_api.urls)),
    url(r'^$', TemplateView.as_view(template_name='base.html'), name='home'),
    url(r'^trailer/', TemplateView.as_view(template_name='trailer.html'), name='trailer'),
    url(r'^newuser/', TemplateView.as_view(template_name='trailer.html'), name='activate'), 
    url(r'^abcd123/', TemplateView.as_view(template_name='trailer.html'), name='url_login'), 
    url(r'^fb/', TemplateView.as_view(template_name='fb.html'), name='fb'), 
)

是否使用url(会有什么不同吗?有推荐的标准吗?

3 个答案:

答案 0 :(得分:5)

如上所述,这是一个完整的例子,说明如何在Django 1.8(和转发)中使用元组列表。 1.8是一个长期版本,因此升级到1.8将保证您至少三年的安全发布。

mLoader

您当时也可以从urlpatterns = [ url(r'^grappelli/', include('grappelli.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^movies/', include('movies.urls')), url(r'^profile/', include('userprofile.urls')), url(r'^api/', include(v1_api.urls)), url(r'^$', TemplateView.as_view(template_name='base.html'), name='home'), url(r'^trailer/', TemplateView.as_view(template_name='trailer.html'), name='trailer'), url(r'^newuser/', TemplateView.as_view(template_name='trailer.html'), name='activate'), url(r'^abcd123/', TemplateView.as_view(template_name='trailer.html'), name='url_login'), url(r'^fb/', TemplateView.as_view(template_name='fb.html'), name='fb'), ] 列表中删除patterns

答案 1 :(得分:3)

  

是否使用url(会有什么不同吗?

没有。传递listtuple的方式与包含在url()中的参数的处理方式相同:

django/urls/__init__.py

 if isinstance(t, (list, tuple)):                                      
     t = url(prefix=prefix, *t)
 elif isinstance(t, RegexURLPattern):
     t.add_prefix(prefix)
  

是否有推荐的标准?

使用url()

config.urls.patterns()本身计划在django 1.10中弃用,此时urlpatterns必须是url()个实例的列表,原始元组不能再使用了。

另外:explicit is better than implicit

答案 2 :(得分:2)

元组是用于指定网址格式的旧(已弃用)方式。

在您的情况下,使用您正在使用的Django版本,如果您使用元组或url(),则没有任何区别。

另请注意,自Django 1.8起,不再需要patterns()has been deprecated。 Django 1.8 recommends改为使用url()列表。