本教程项目只有一个应用程序 - polls。在实际的Django项目中,可能有五个,十个,二十个或更多的应用程序。Django 如何区分它们的URL的名称? 例如,投票应用程序有一个详细视图,因此可能会在一个博客的同一个项目也有相同的应用程序。如何使用 {% url %} 模板标签让Django知道创建一个URL哪些应用有这样视图?
答案就是将命名空间添加到URLconf。在polls/urls.py文件,继续前进,添加应用程序名称设置应用程序命名空间,打开 polls/urls.py:
from django.conf.urls import url
from . import views
app_name = 'polls'
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^(?P<question_id>[0-9]+)/$', views.detail, name='detail'),
url(r'^(?P<question_id>[0-9]+)/results/$', views.results, name='results'),
url(r'^(?P<question_id>[0-9]+)/vote/$', views.vote, name='vote'),
]
现在修改 polls/index.html 模板,打开 polls/templates/polls/index.html 文件添加以下代码:
<li><ahref="{%url'detail'question.id%}">{{question.question_text}}</a></li>
使其指向在命名空间 detail 视图,打开 polls/templates/polls/index.html 文件如下:
<li><ahref="{%url'polls:detail'question.id%}">{{question.question_text}}</a></li>
|