我注意到在Django中,文件urlpatterns中有两种格式的urls.py:

urlpatterns = [
    url(...),
    url(...),
]


urlpatterns = pattern('',
    url(...),
    url(...),
)

第一个是url实例列表,第二个是使用空字符串和多个pattern实例作为参数调用url模块。
  • 两者有什么区别?
  • 第二种格式的空字符串的作用是什么?
  • 建议使用哪个?
  • 最佳答案

    在Django 1.8+中,urlpatterns应该只是url()的列表。这种新语法实际上也可以在1.7中使用。

    urlpatterns = [
        url(...),
        url(...),
    ]
    

    在Django 1.8中使用pattern is deprecated的旧语法在Django 1.10中已删除。
    urlpatterns = pattern('',
        url(...),
        url(...),
    )
    

    使用旧语法,您可以提供前缀。 in the docs给出的示例是
    urlpatterns = patterns('news.views',
        url(r'^articles/([0-9]{4})/$', 'year_archive'),
        url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'),
        url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'),
    )
    

    但是,现在也不建议在 View 中使用字符串参数,而应提供callable。

    10-08 02:52