Шаблон – это просто текстовый файл. Он может генерировать любой текстовый формат (HTML, XML, CSV и т. Д.).
Шаблон содержит переменные, которые заменяются значениями при оценке шаблона, и теги, которые управляют логикой шаблона.
Ниже приведен минимальный шаблон, который иллюстрирует несколько оснований.
{% extends "base_generic.html" %} {% block title %}{{ section.title }}{% endblock %} {% block content %}{{ section.title }}
{% for story in story_list %}{{ story.headline|upper }}
{{ story.tease|truncatewords:"100" }}
{% endfor %} {% endblock %}
{ % расширяет "base_generic.html" %}
использует буквальное значениеbase_generic.html
как имя родительского шаблона для расширения.для
петли по каждому элементу в массиве, предоставляя элемент в контекстной переменнойВерхний
Преобразует строку во все прописные.TruncateWords
усекает строку после определенного количества слов.
Шаблон наследование
Предположим, мы создаем base.html
который определяет простой скелетный документ HTML, который вы можете использовать для базового html документ . Это работа Детский шаблон
Чтобы заполнить пустые блоки контентом.
В этом примере тег блока определяет три блока, которые Детский шаблон
может заполнить. Весь блок -тег – это рассказать механизм шаблона, что Детский шаблон
может переопределить эти части шаблона.
A Детский шаблон
может выглядеть так:
{% extends "base.html" %} {% block title %}My Blog{% endblock %} {% block content %} {% for entry in blog_entries %}{{ entry.title }}
{{ entry.body }}
{% endfor %} {% endblock %}
{{block.super}}
Так что же {{block.super}}
? И какова цель этого в Django Шаблоны?
Давайте создадим блок контента в Пример.html
:
{% block content %}Some example text.
{% endblock %}
И тогда мы можем расширить этот блок в Second.html
шаблон:
{% extends 'example.html' %} {% block content %}The previous example text is replaced by this text.
{% endblock %}
Во втором примере выше будет отображаться только последнее предложение: Предыдущий пример текст заменяется этим текстом.
Какой -то пример текста. переопределяется и заменяется. Вы должны использовать {{block.super}}
Если вы хотите оба содержимого:
{% extends 'example.html' %} {% block content %} {{ block.super }}The previous example text is replaced by this text.
{% endblock %}
Это в основном та же концепция для супер
в любом Оп
; Вы называете Конструктор родительский
Класс, чтобы включить любой код там, вместо того, чтобы просто переопределить его.
От официального Джанго Док :
- Если вам нужно получить содержание блока от родительского шаблона,
{{block.super}}
Переменная сделает свое дело. Это полезно, если вы хотите добавить к содержимому родительскому блоку вместо полностью переопределить его. Данные вставлены с использованием{{block.super}}
не будет автоматически сбежать (см. Следующий раздел), так как он уже был сбежал, если это необходимо, в родительском шаблоне.
Оригинал: “https://dev.to/serhatteker/django-template-block-super-12o4”