Всем привет, я начал осваивать джанго, поэтому следующие посты будут все больше и больше охватывать Джанго.

Итак.

В шаблоне Django мы можем использовать теги шаблонов “URL”, чтобы получить путь вида, как этот:

{% url 'blog:top' %}

На выходе здесь будет /blog/

Как мы можем сравнить этот возвращаемый путь? Вы можете использовать ‘as’ синтаксис для шаблона URL тега, чтобы сохранить возвращаемое значение переменной, и сравнить его с некоторой строкой или другой переменной:

{% url 'blog:top' as top_path %}
Сравним со строкой
{% if top_path == '/blog/'%}Путь имеет значение '/blog/'{% endif %}
С другими вариантами

Но в целом, этот способ не такой разумный. Поскольку шаблоны не должны иметь много логик.

Рассмотрим некоторые анти-шаблоны, если вы не хотите показывать определенный текст на определенной странице:

{# In base.html #}
<html>
<body>
<a href="{% url 'top' as top_path %}
    {% if top_path != request.path %}
        {{ top_path }}
    {% endblock %}">Brand Logo</a>
{% block content %}{% endblock %}
</body>
</html>
{# In top.html #}
{% extends 'base.html' %}
{% block content %}
    Привет, это главная страница
{% endblock %}

Это “if” синтаксис в base.html означает “Не создавать главный путь, когда пользователь находится на главной странице”. Он может работать с ошибками. Но это может быть реализовано более простым способом, используя синтаксис блока:

{# In base.html #}
<html>
<body>
<a href="{% block bland_path%}{{ top_path }}{% endblock %}">Brand Logo</a>
{% block content %}{% endblock %}
</body>
{# In top.html #}
{% extends 'base.html' %}
{% block top_path %}{% endblock %}{# Перезаписать это вместо текста #}
{% block content %}
    Привет! Это главная страница
{% endblock %}

При этом дочерний шаблон знает о поведении для скрытия ссылки на главной странице. В предыдущем примере, шаблон должен получить доступ к ‘request’, так что вам нужно использовать ‘contextprocessors.request’. И добавлять страницы, не указывая ссылку, которую, в будущем, вы можете поменять.

Голосов  (6)
Плагин рейтинга создан автором этого блога. Буду очень признателен, если вы сможете его поддержать (ссылка)