📜  如何在 django 模板中获取当前 url 路径 - Python (1)

📅  最后修改于: 2023-12-03 15:08:36.230000             🧑  作者: Mango

如何在 Django 模板中获取当前 URL 路径 - Python

在 Django 中,有时我们需要在模板中获取当前 URL 路径,比如在某些页面上需要标记当前所在的菜单项等。本文将介绍如何在 Django 模板中获取当前 URL 路径。

使用内置的 request 对象获取当前 URL 路径

Django 中的请求对象 request 中包含了当前请求的 URL 路径,我们可以在模板中通过 request.path 来获取当前 URL 路径。示例代码如下:

{% if request.path == '/' %}
    <a href="/" class="active">Home</a>
{% else %}
    <a href="/">Home</a>
{% endif %}

{% if request.path == '/about/' %}
    <a href="/about/" class="active">About</a>
{% else %}
    <a href="/about/">About</a>
{% endif %}

上述示例中,我们通过比较 request.path 和当前菜单项的 URL 路径来判断是否需要给当前菜单项添加 class="active"

使用 Django 内置的 URL 处理函数获取当前 URL 路径

Django 中的 reverse() 函数可以将 URL 名称解析为对应的 URL 路径。我们可以在模板中通过调用 reverse() 函数并传入当前 URL 名称来获取当前 URL 路径。示例代码如下:

{% url 'home' as home_url %}
{% url 'about' as about_url %}

{% if request.path == home_url %}
    <a href="{{ home_url }}" class="active">Home</a>
{% else %}
    <a href="{{ home_url }}">Home</a>
{% endif %}

{% if request.path == about_url %}
    <a href="{{ about_url }}" class="active">About</a>
{% else %}
    <a href="{{ about_url }}">About</a>
{% endif %}

上述示例中,我们通过调用 url 模板标签并给定 URL 名称来获取当前 URL 路径并存储到变量中,然后再与 request.path 进行比较。

结论

在 Django 模板中获取当前 URL 路径可以使用 request.pathreverse() 函数。具体使用哪种方法取决于你的应用需求。使用 request.path 可避免重复编写 URL 名称,但在某些情况下会显得复杂。而使用 reverse() 函数可以更简单明了地获取当前 URL 路径,但需要给定 URL 名称。