代码之家  ›  专栏  ›  技术社区  ›  Vernon

以django模板语言检索URL

  •  1
  • Vernon  · 技术社区  · 15 年前

    在django模板中,我如何引用该URL。我想在静态页面中使用它,以避免有指向当前页面的实时链接。有没有办法用django模板语言来实现这一点,或者我必须使用javascript来实现这一点?

    我想做点什么

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

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

    3 回复  |  直到 15 年前
        1
  •  3
  •   Daniel Roseman    15 年前

    我想你所说的“静态页面”是指一般的视图。在内部,它们使用requestContext,因此您可以访问 request 对象,它是当前的httpRequest。因此,您可以使用 request.path .

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

    注意这个 if 语法仅限于django 1.2+—如果使用的是旧版本,则必须执行以下操作:

    {% ifequal request.path '/about/' %}
    ...
    {% endifequal %}
    
        2
  •  1
  •   Steve Jalim    15 年前

    而不是 current_url 在上面的示例中,可以替换 request.path (假设你有 django.core.context_processors.request 在游戏中)它必须是 == = o)

        3
  •  0
  •   Chris Lawlor    15 年前

    我认为您可以通过简单的模板继承来实现这一点:

    # 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 %}
    

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