#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. Хорошее решение. Я не проверял, был ли это отдельный код или переопределение синтаксиса.