Идеология и ограничения Django

Опубликовал: Friday, January 20, 2024 в категории Django | Пока нет комментариев

Теперь, когда вы получили представление о языке шаблонов в Django, мы хотели бы рассказать о некоторых намеренных ограничениях и об идеологических принципах, положенных в основу его работы.

Синтаксис шаблонов субъективен, пожалуй, в большей степени, чем любой другой компонент веб-приложений, и мнения программистов по этому поводу сильно разнятся. Об этом свидетельствует наличие десятков, если не сотен, открытых реализаций языков шаблонов только на Python. И надо полагать, что каждая из них была написана потому, что все существующие языки шаблонов автору не понравились. (Считается даже, что написание собственного языка шаблонов - обряд посвящения в программисты на Python! Если вы еще этого не делали, попробуйте, это хорошее упражнение.)

С учетом вышесказанного вам, наверное, будет интересно узнать, что Django не заставляет вас пользоваться его собственным языком шаблонов. Поскольку Django задуман как полноценный фреймворк, предоставляющий все необходимое для продуктивного труда веб- разработчиков, чаще всего удобнее применять встроенную в него систему шаблонов, а не какую-нибудь другую библиотеку на Python, но это не является непререкаемым требованием. Ниже, в разделе «Использование шаблонов в представлениях», вы увидите, насколько просто использовать в Django любой другой язык шаблонов.

Тем не менее мы без сомнения отдаем предпочтение системе шаблонов, встроенной в Django. Своими корнями она уходит в разработку веб-приложений для сайта World Online и основана на богатом совокупном опыте создателей Django. Вот некоторые из положенных в ее основу идеологических принципов:

•      Бизнес-логика должна быть отделена от логики представления. Разработчики Django рассматривают систему шаблонов как инструмент, который управляет представлением и связанной с ним логикой, - и только. Система шаблонов не должна поддерживать функциональность, выходящую за эти пределы.

По этой причине невозможно вызывать написанный на Python код непосредственно из шаблонов Django. «Программирование» принципиально ограничено теми действиями, которые заложены в шаблонные теги. Есть возможность написать пользовательские шаблонные теги, умеющие выполнять произвольные действия, но готовые теги Django не позволяют выполнять произвольный код на Python, и это сознательное решение.

•      Синтаксис не должен быть привязан к HTML/XML. Хотя система шаблонов Django применяется главным образом для генерации HTML-разметки, она ничуть не менее пригодна и для других форматов, например, обычного текста. Существуют языки шаблонов, основанные на XML, в которых вся логика определяется тегами или атрибутами XML, но разработчики Django сознательно отказались от такого решения. Требование записывать шаблоны в виде корректного XML-документа открывает обширное пространство ошибок при записи и невнятных сообщений о них. Кроме того, накладные расходы, связанные с синтаксическим анализом XML-документа при обработке шаблонов, неприемлемо высоки.

•      Предполагается, что дизайнеры уверенно владеют HTML. При проектировании системы шаблонов не ставилась задача любой ценой добиться красивого отображения в таких WYSIWYG-редакторах, как Dreamweaver. Это слишком жесткое ограничение, которое не дало бы возможности сделать синтаксис таким удобным, как сейчас. Разработчики Django полагают, что авторы шаблонов вполне способны редактировать HTML-код вручную.

•      Не предполагается, что дизайнеры умеют программировать на Python. Авторы системы шаблонов понимали, что шаблоны вебстраниц чаще всего пишут дизайнеры, а не программисты, поэтому и не предполагали знакомство с языком Python.

Однако система адаптируется также под нужды небольших коллективов, в которых шаблоны создают именно программисты. Она позволяет расширять синтаксис за счет написания кода на Python. (Подробнее об этом см. главу 9.)

•      Не ставилась задача изобрести новый язык программирования. Авторы намеревались предложить лишь ту функциональность, которая необходима для принятия решений, относящихся к отображению информации, в частности, ветвления и циклы.

Источник: Головатый А., Каплан-Мосс Дж. Django. Подробное руководство, 2-е издание. - Пер. с англ. - СПб.: Символ- Плюс, 2010. - 560 е., ил.

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *