Теперь, когда у вас есть понимание языка шаблонов Django, мы должны остановиться на его осознанных ограничениях и на том, почему так сделано.
Мнения разработчиков о шаблонной системе варьируются очень широко по сравнению с другими компонентами веб приложений. Поддерживает это утверждение тот факт, что сам Python содержит их десятки, если не сотни. Каждая шаблонная система вероятно была создана потому что её разработчик счёл все существующие системы неподходящими. (В действительности, существует своеобразный экзамен для разработчика на Python — написать свой собственный язык шаблонной системы! Если вы не сделали такого, попробуйте. Это интересный опыт.)
Помня это, вам возможно будет интересно узнать, что Django не требует, чтобы вы использовали именно её язык шаблонов. По причине того, что Django создана как полноценная система веб разработки, которая предоставляет все необходимые компоненты для продуктивной работы, будет гораздо удобнее использовать её шаблонную систему, вместо других шаблонных библиотек Python. Но это не накладывает никаких ограничений на вас. Как вы увидите в разделе «Использование шаблонов в представлениях», очень легко использовать другой шаблонный язык совместно с Django.
Но уже сейчас ясно, что мы настойчиво предлагаем использовать шаблонный язык Django. Шаблонная система ведёт свою историю из разработки для World Online и объединяет опыт создателей Django. Вот некоторые из постулатов:
Бизнес-логика должна быть отделена от логики представления. Мы рассматриваем шаблонную систему как инструмент управления представлением и логикой для этого представления, не более. Шаблонная система не должна поддерживать функциональность, которая выходит за рамки этой основополагающей цели.
По этой причине нет возможности вызвать напрямую код на языке Python из шаблонов Django. Всё «программирование» принципиально ограничено рамками возможностей тегов. Можно создать пользовательские шаблонные теги для выполнения определённых задач, но намеренно не позволяется выполнять код на языке Python вне тегов шаблона.
Синтаксис должен быть отделён от HTML/XML. Несмотря на то, что шаблонная система Django используется в первую очередь для генерации HTML, она разрабатывалась с поддержкой не HTML форматов, таких как обычный текст. Некоторые другие языки шаблонов основаны на XML, размещая всю шаблонную логику в тегах и атрибутах XML, но Django сознательно избегает это ограничение. Требование верного XML для создания шаблонов привносит целый букет человеческих ошибок и трудно-понимаемых сообщений о них. Также, использование XML парсера привносит неприемлемый уровень нагрузки на процессор шаблонов.
Предполагается, что дизайнеры способны работать с чистым HTML. Шаблонная система не разработана так, чтобы шаблоны всегда отображались красиво в WYSIWYG редакторах, подобных Dreamweaver. Поддержка таких редакторов накладывает слишком серьёзные ограничения на синтаксис шаблона. Django ожидает, что авторы шаблонов работают с HTML напрямую.
Предполагается, что дизайнеры не являются Python программистами. Авторы шаблонной системы признают, что чаще всего шаблоны для страниц разрабатываются дизайнерами, не разработчиками, и, следовательно, это не должно предполагать наличия знания языка Python.
Тем не менее, шаблонная система старается поддерживать небольшие команды, в которых шаблоны создаются Python программистами. Она предлагает способ расширения синтаксиса системы с помощью кода на языке Python (подробности в главе 9 FIXME).
Изобретение языка программирования — не наша цель. Цель — предложить достаточно программистской функциональности, такой как ветвление и циклы, чего будет достаточно для презентационных решений.
| Пред. | Уровень выше | След. |
| Основные шаблонные теги и фильтры | Начало | Использование шаблонов в представлениях |
1 comment | Make a comment
Отличная философия!