我是Django的新手,我正在努力理解它。如果我写这样的网址模式
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 :(得分:4)
当它表示传递callable时,表示你应该导入视图本身并将其包含在你的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(r'^home/$', home, name='home'),
然后您可以在代码中使用reverse('home')
,在模板中使用{% url 'home' %}
,而不是重复编写/home/
。