2015-12-21 49 views
-1

我是Django的新手,我想了解它。如果我写这样的url模式Django url模式的第三个参数是什么?

url(r'^$', 'newsletter.views.home', name='home'), 

它的工作原理。而如果我把它写这样

url(r'^$', 'newsletter.views.home'), 

它仍然有效,但我从服务器获取以下数据

RemovedInDjango110Warning:字符串视图参数的URL支持()已被弃用,将在Django被删除1.10(获得newsletter.views.contact)。代之以传递可调用信息。 url(r'^ contact/$','newsletter.views.contact'),

我的第一个问题是第三个参数做什么。在

name='home' or name='contact'. What is it reffering to. 

和我的第二个问题是什么呢

Pass the callable instead. 

是什么意思?再次,我已经阅读了文档,并在这里以更为清晰的外行人的名义来到这里。欢迎所有的帮助和建议

+0

请注意'kwargs'是[url patterns]的第三个参数(https://docs.djangoproject.com/en/1.9/ref/urls/#django.conf.urls.url)。由于它是可选的,所以可以省略它,并且包括'name'作为关键字参数,例如'名='home''。 – Alasdair

+0

无论您是否在URL模式中使用'name',您都应该得到相同的弃用警告。 – Alasdair

回答

4

当它说通过可调用,这意味着你应该导入视图本身,并将其包含在你的url模式。

from newsletter.views import home 

url(r'^$', home, name='home'), 

另一种选择是导入views模块本身

# renaming allows us to import more than one views at once 
from newsletter import views as newsletter_views 

url(r'^$', newsletter_views.home, name='home'), 

命名URL模式可以反转URL模式(例如,从名称到一个URL)。这意味着您不必在视图和模板中硬编码网址。

如果你有

url(r'^home/$', home, name='home'), 

那么您可以在您的模板在代码中使用reverse('home'){% url 'home' %},而不是重复写入/home/

+0

感谢您的回复。所以要清楚,在你提供的例子中不再需要第三个参数,对吧?名称='home'部分或name ='contact'不再需要,因为我正在导入视图。 – losee

+1

这是**总是**好的做法,为您的网址命名。弃用警告与您是否为您的网址命名无关。但是,它曾经可以在url标记中使用字符串“newsletter_views.home”,即{{%url'newsletter.views.home'%}''。对于Django 1.10+,这将不再起作用,并且您必须**命名您的url模式以便能够将它们取消。 – Alasdair

+0

@alsdair我刚刚尝试了从newsletter newsletter导航视图中提供的建议,因为newsletter_views和新闻快讯和视图都出现了错误 – losee

相关问题