为避免在模板中使用URL的硬编码,可以使用{% url %}模板标签来解决
<li><a href="/task/{{ task.id }}/">{{ task.name }}</a></li>
可以用以下方法替换
<li><a href="{% url 'detail' task.id %}">{{ task.name }}</a></li>
注:detail是url中使用name参数定义
url(r'^(?P<task_id>\d+)/$', views.detail, name='detail')
如果多个应用中避免名字冲突,可以使用命名空间
在项目的URL中使用
urlpatterns = patterns('',
url(r'^task/', include('task.urls', namespace="task")),
url(r'^admin/', include(admin.site.urls)),
)
模板中可以写为
<li><a href="{% url 'task:detail' task.id %}">{{ task.name }}</a></li>