【发布时间】:2019-01-19 20:19:30
【问题描述】:
在 django 模板中,如果 url/path 是特定的,我不想显示某些元素。在伪中:
{% if not url = account:detail %}
【问题讨论】:
标签: django django-templates django-urls
在 django 模板中,如果 url/path 是特定的,我不想显示某些元素。在伪中:
{% if not url = account:detail %}
【问题讨论】:
标签: django django-templates django-urls
我们可以在这里分两步完成:
url2);和所以:
{% url account:detail as url2 %}
{% if url != url2 %}
<!-- ... (do something) ... -->
{% endif %}
但是请注意,如果两个 url 在语法上不同(例如 yourdomain.com/foo 和 /foo),它们本身指向不同的东西。
如果您想访问 当前 路径,您可以 - 就像 @RajaSimon 所说,通常使用 request.path(假设您使用 RequestContext、render(..) 或其他渲染模板传递request 对象的方式)。
【讨论】:
request.path 获取当前页面网址,这就是您要问的吗?如果是这样,您的条件应该是{% if request.path != account_detail_url %}
url2变量中。所以你可以比较{% if request.url != url2 %}。
url 内置模板来解析url。
您可以在 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 %}
【讨论】: