Объяснение Django {% block %}

#django #django-templates #django-cms

#django #django-шаблоны #django-cms

Вопрос:

Я новичок в Django, и я хотел попробовать изучить некоторые основы Django-CMS.

Когда я начал редактировать шаблон по умолчанию, который был сгенерирован установщиком, я заметил, что есть {% block ... %} блоки, но я не смог найти никакой документации о том, что block означает или более конкретно, что block title и block content означает.

Как в документации Django, так и в документации Django-CMS отсутствует такое объяснение, что странно, учитывая тот факт, что это кажется довольно простым. Когда я удалил block title блок, заголовок был перепутан.

Я использую:

  • Django 1.8.15
  • django-cms 3.4.1.

Комментарии:

1. Прочитайте эту документацию

2. @dahrens Хорошо, я просто прочитал это снова и нашел то, что пропустил. Я думаю, я запутался, потому что документация django cms ничего не говорит об этом. Спасибо.

Ответ №1:

То {% block %} ... stuff {% endblock %} , что вы видите, предназначено для создания повторно используемых фрагментов HTML (или частей, или блоков). В Django они используют подсистему под названием Jinja (Jinja2).

Обратите внимание, что синтаксис, который вы увидите там, не является эксклюзивным для Jinja. Идея заключается в том, что язык программирования и фреймворк используют компонент, позволяющий инкапсулировать шаблоны HTML. Мы называем эти системы веб-шаблонов и иногда называем их «без логики». Хотя мы можем выполнять цикл и выполнять условные выражения.

В Jinja (и других подобных синтаксических подсистемах) blocks есть части, которые мы можем использовать повторно. «Макрос», если хотите. В Jinja также есть макросы, в которые вы также можете добавлять аргументы, чтобы повлиять на то, как будет сгенерирован вывод.

Комментарии:

1. Язык шаблонов Django отличается от Jinjia. Хотя в последних версиях вы можете в качестве альтернативы использовать Jinja. Но block присутствует в обоих.

2. Хорошее решение. Я не проверял, был ли это отдельный код или переопределение синтаксиса.