以Django模板语言检索URL

时间:2010-06-16 16:09:07

标签: javascript django

在Django模板中,我如何引用URL。我想在静态页面中使用它,以避免有当前页面的实时链接。有没有办法用Django模板语言做到这一点,还是我必须使用JavaScript来做到这一点?

我想做点什么

{% if current_url == "/about/" %}
About
{% else %}
<a href='/about/'>About</a>
{% endif %}

我将它用于一个简单的博客,因此没有针对这些页面编写的视图。

3 个答案:

答案 0 :(得分:3)

我假设你引用的是“静态页面”,你的意思是通用视图。在内部,它们使用RequestContext,因此您可以访问request对象,这是当前的HttpRequest。因此,您可以使用request.path访问当前网址。

{% if request.path == '/about/' %}
...
{% endif %}

请注意,此if语法仅限Django 1.2+ - 如果您使用的是旧版本,则必须执行以下操作:

{% ifequal request.path '/about/' %}
...
{% endifequal %}

答案 1 :(得分:1)

而不是上面示例中的current_url,您可以替换request.path(假设您正在玩django.core.context_processors.request)。它必须是==而不是=:o)

答案 2 :(得分:0)

我认为你可以通过简单的模板继承来实现这个目标:

# base.html
{% block contactlink %}<a href='/contact/'>Contact</a>{% endblock %}
{% block aboutlink %}<a href='/about/'>About</a>{% endblock %}
  ...

# about.html
{% block aboutlink %}About{% endblock %}

# contact.html
{% block contactlink %}Contact{% endblock %}

当然,这只适用于每个页面都有一个单独的模板,但我假设您这样做,因为您说这些页面是静态的。了解更多关于您正在使用的视图(假设通用视图direct_to_template或类似视图)和您的urls.py会有所帮助。