如何在Django模板中创建正确的路径

时间:2016-08-04 14:50:34

标签: django templates

我试图在模板中创建菜单,这导致了一些子页面:

<a href="/">HOME</a> <a href="/about/">O NAS</a> <a href="/rules/">REGULAMIN</a> <a href="/faq/">FAQ</a> <a href="/docs/">DOKUMENTY</A> <a href="/contact/">KONTAKT</a>

仅当我将其放入主文件夹时才有效,因此网址为http://example.org/about/

当我把它放入某个子文件夹时,它会出错:

http://example.org/subfolder/about/有效,但菜单中的链接仍为http://example.org/about/,这是正确的行为。

相对路径不起作用,因为它添加而不是替换URL的最后部分,例如:http://example.org/subfolder/about/rules/

如果我知道它会放置什么网址,我可以将其硬编码到模板中,但我确信它可以在两个地方使用不同的&#34;子文件夹&#34;,我想要让它在任何环境中工作。

我试图找到解决方案,但它导致我TEMPLATE_CONTEXT_PROCESSORS不能为我工作,而且我不确定它是否正是我所做的。我想要得到,所以我不要深入研究。

2 个答案:

答案 0 :(得分:1)

Name your URL's

url(r'^about', views.about, name="about")

然后使用URL template tag为每个名称生成相应的网址。

{% url 'about' %}

答案 1 :(得分:0)

The solution was adding

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

into settings.py

This was found here: https://stackoverflow.com/a/9233283/354420

在模板中,如果已定义,您可以使用views.aboutname