Рубрики
Без рубрики

Django Template – `{{block.super}}`

Шаблоны Django Шаблон – это просто текстовый файл. Он может генерировать любой текстовый формат (… Tagged с Django, Python, Template, Html.

Шаблон – это просто текстовый файл. Он может генерировать любой текстовый формат (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”