Django Book: философия и ограничения

Автор: | 02/15/2015
 

django_logo_2Предыдущая часть.

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

Синтаксис шаблонов очень субъективен, а мнения разработчиков очень и очень различны. Тот факт, что Python имеется десятки, если не сотни, реализаций языка шаблонов подтверждает этот факт. Каждый был создан потому что его разработчик считал, что все существующие языки шаблонов были неподходящими (на самом деле, это такой себе «обряд посвящения» в настоящие разработчики, и если вы ещё не создали свой язык шаблонов — то стоит рассмотреть возможность этим заняться в будущем — это очень увлекательное занятие).

Примечание: видимо, речь идёт о таким системах, как Jinja2, Cheetah и им подобным. Смотрите тут>>> для более полной информации.

Вам было бы интересно узнать, что Djnago не требует использования исключительно её родной системы шаблонов. Так как Django задуман как полноценный веб-фреймворк, который предоставляет полный спектр необходимых механизмов для веб-разработчика, обычно предпочтительно использование родной системы шаблонов — но это не является обязательным требованием. Как вы увидите в следующей части, «Использование шаблонов в представлениях» — очень просто использовать другою реализацию системы шаблонов вместе с Django.

Как бы там ни было, мы, конечно, предпочитаем разобраться с тем, как работает система шаблонов Django. Корни этой системы уходят в глубину веб-разработки для WWW, плюс опыт разработчиков Django. Вот некоторые её философские понятия:

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

    Именно поэтому невозможно использовать кодPython непосредственно в шаблоне Django. Всё «программирование» в шаблонах ограничено тем, что можно выполнить с помощью тегов. Можно написать свои собственные теги, что бы реализовать некоторые свои собственные идеи, однако система тегов в шаблонах Djnago «из коробки» не допускает использования кода Python.

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

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

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

    Однако, система так же допускает, что шаблоны будут писаться непосредственно разработчиками на Python, и потому допустимо её расширение с использованием кода на Python.

  • Нет цели создать новый язык программирования. Целью является создание функциональности в стиле программирования, например — ветвление и циклы.

Продолжение — Django Book: использование шаблонов в представлениях