现在,在我的模板中,我将导航中的链接硬着如下:
`base.html`
<a href="/about">About</a>
<a href="/contact">Contact</a>
<!-- etc -->
在我的urls.py
urlpatterns = patterns('',
url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name='about'),
url(r'^contact/$', TemplateView.as_view(template_name='pages/contact.html'), name='contact'),
)
有没有办法在我的base.html
文件中引用来自urls.py
的urlpatterns,以便我随时更改它们,它反映了我的页面和模板的所有地方?像
<!-- what I would like to do -->
<a href="{{ reference_to_about_page }}">About</a>
<a href="{{ reference_to_contact_page }}">About</a>
答案 0 :(得分:6)
这就是发明url
标签的原因:
返回绝对路径引用(不带域名的URL) 匹配给定的视图函数和可选参数。
如果你是 使用命名的URL模式,您可以参考模式的名称 url标记,而不是使用视图的路径。
这基本上意味着您可以使用urlpatterns
标记中url
配置的网址名称:
<a href="{% url 'about' %}">About</a>
<a href="{% url 'contact' %}">Contact</a>
这为您提供了更大的灵活性。现在,只要about
或contact
页面的实际网址发生变化,模板就会“赶上”#34;自动变化。
答案 1 :(得分:0)
将Django的url
模板标记(docs here)与您指定的网址格式一起使用。
示例:
<a href="{% url 'about' %}">About</a>
<a href="{% url 'contact' %}">Contact</a>
请注意,您在' '
中输入的名称将是name
中特定网址格式的urls.py
。另外,如果这是应用中的urls.py
文件(也就是说,它最初从基座urls.py
路由),则您需要包含应用的命名空间。