2015-10-04 39 views
1

在Django的1.8 urls.py是这样写的:为什么在Django 1.8有不同urls.py

from django.conf.urls import url 

from . import views 

urlpatterns = [ 
    url(r'^articles/2003/$', views.special_case_2003), 
    url(r'^articles/([0-9]{4})/$', views.year_archive), 
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), 
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), 
] 

在Django的1.7 urls.py看起来是这样的:

from django.conf.urls import patterns, url 

from . import views 

urlpatterns = patterns('', 
    url(r'^articles/2003/$', views.special_case_2003), 
    url(r'^articles/(\d{4})/$', views.year_archive), 
    url(r'^articles/(\d{4})/(\d{2})/$', views.month_archive), 
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', views.article_detail), 
) 

灿有人解释为什么在[(括号和关键字'模式')中有区别?

什么是电子背景以及它如何实际显示?

+0

你看到改变了吗?在doc中? '[0-9]'只能匹配0-9数字,而'\ d'也可以匹配Unicode数字字符。 –

+0

单词模式来自django 1.7文档 – user1406647

回答

1

看到1.8 release notes

模式()几乎没有多大意义,是一种负担教学新 用户时,(回答新手的问题:“为什么我需要这个空 字符串作为第一个参数模式()? “)。由于这些原因,我们 已弃用它。更新你的代码是为确保 urlpatterns的简单的django.conf.urls.url列表()实例

4

在1.7,你可以使用一个字符串,用于定义视图的导入路径,而不是一个实际查看功能。模式的第一个参数是一个将用于每个以下视图的前缀。这包括来自同一模块的多个视图,即:

urlpatterns = patterns('myapp.views', 
    url(r'^articles/2003/$', 'special_case_2003'), 
    url(r'^articles/(\d{4})/$', 'year_archive'), 
    url(r'^articles/(\d{4})/(\d{2})/$', 'month_archive'), 
    url(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'article_detail'), 
) 

时减少重复然而,这是进口的“神奇”没有很好的理由。它可以隐藏导入错误,并且总体上使调试不正确的url模式变得更加困难。出于这个原因,使用字符串而不是视图函数在1.8中被弃用,并且将在1.10中被删除。

由于patterns()除了向基于字符串的视图导入添加前缀之外没有其他目的,它也已被弃用,并将在1.10中被删除。