Django - Смогу ли я использовать теги шаблонов для рендеринга HTML с учетом условий пути URL?
У меня есть страница блога с путем /articles/
. Я хотел бы использовать условные операторы для отражения HTML-рендеринга.
Например, в моем блоге используется пагинатор для записей блога. Пагинатор использует URL-запрос для получения следующей страницы объектов поста следующим образом: /articles/?page=2
Я бы хотел, чтобы на следующей странице HTML-шаблон был стилизован по-другому, поэтому я использую условный оператор.
Вот мой шаблон, который я использую:
{% if request.path == '/articles/' %}
# Render HTML only meant for the above path
{% elif request.path != '/articles/'%}
# Render HTML for paths that are NOT the exact match above, such as pagination URLs,
# search querys, categories filtering, etc...
{% endif %}
Моя текущая ошибка заключается в том, что я отображаю только первое утверждение: if request.path == '/articles/'
для всего, даже для не точных совпадений.
Таким образом, этот путь URL: /articles/?page=2
отображается: {% if request.path == '/articles/' %}
, когда должен быть отображен elif {% elif request.path != '/articles/'%}
из-за отсутствия знака равенства.
Можно ли сделать вышеописанное, используя только HTML теги шаблона? Я знаю, что могу использовать urls.py и редактировать представления, но я использую wagtail CMS и игра с шаблоном кажется самой простой вещью, которую можно сделать прямо сейчас.
request.path
не включает часть URL в виде строки запроса '?...', поэтому все работает так, как задумано - часть пути URL/articles/?page=2
является /articles/
.
Django компилирует строку запроса в словарь request.GET
, поэтому один из способов сделать то, что вы хотите, это проверить, пуст ли этот словарь или нет:
{% if not request.GET %}
request is for the plain URL /articles/
{% else %}
request has a querystring parameter on it
{% endif %}