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 %}
Вернуться на верх