比较Django模板中的网址

时间:2018-08-13 06:51:06

标签: django django-templates django-urls

在Django模板中,如果URL /路径是特定的,我不想显示某些元素。伪:

 {% if not url = account:detail %}

2 个答案:

答案 0 :(得分:3)

我们可以在此处分两个步骤进行操作:

  1. 首先,我们重新获得URL,并将其分配给变量(此处为url2);和
  2. 接下来比较网址

所以:

{% url account:detail as url2 %}
{% if url != url2 %}
    <!-- ... (do something) ... -->
{% endif %}

但是请注意,如果两个网址在语法上不同(例如yourdomain.com/foo/foo),则它们本身会指向不同的内容。

如果您想访问 current 路径,则可以-就像@RajaSimon所说的那样,通常使用request.path(假设您使用RequestContext,{{ 1}},或传递render(..)对象的另一种方法。

答案 1 :(得分:1)

您可以在urls.py文件中为您的网址命名(url_name),然后可以使用模板中可用的HttpRequest.resolver_match对象直接进行比较。

from django.urls import path
from . import views

urlpatterns = [
    path('articles/<int:year>/', views.year_archive, name='news_year_archive'),
    # ...
]

您可以在模板中进行比较,

{% if request.resolver_match.url_name == "news_year_archive" %}
   ...your stuff
{% endif %}