在Django urlpatterns中省略“url(”有什么意义

2024-05-14 10:44:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一些Django代码来接管设置.py使用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(有什么区别吗?有推荐标准吗?你知道吗


Tags: nameviewapiurlfbincludeadminhtml
3条回答

元组是指定url模式的旧(已弃用)方法。你知道吗

在您的例子中,对于您正在使用的Django版本,使用元组或url()没有任何区别

还要注意的是,自从django1.8以来,对patterns()的调用不再是必需的,而且has been deprecated。django1.8 recommends改用url()列表。你知道吗

下面是一个完整的示例,说明如何在django1.8(和forward)中使用元组列表来完成这项工作,如前所述。1.8是一个长期的版本,因此升级到1.8将保证您的安全版本至少三年。你知道吗

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'), 
]

您也可以在那时从import列表中删除patterns。你知道吗

Does it make any difference whether or not url( is used?

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

django/urls/__init__.py

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

Is there a recommended standard?

使用url()。你知道吗

在django1.10中,config.urls.patterns()本身被安排为弃用,此时,urlpatterns必须是url()实例的列表,并且不能再使用原始元组。你知道吗

另外:explicit is better than implicit。你知道吗

相关问题 更多 >

    热门问题