Шаблон проектирования MTV (или MVC)

Прежде чем продолжить изучение кода, поговорим немного об общем подходе к проектированию веб-приложений, работающих с данными, в Django.

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

Читать

Модели Django

В главе 3 мы рассмотрели основы построения динамических веб-сайтов с помощью Django: создание представлений и настройку шаблонов URL. Мы сказали, что представление может реализовывать произвольную логику и должно вернуть ответ. В качестве одного из примеров такой произвольной логики мы привели вычисление текущих даты и времени.

Читать

Наследование шаблонов Django

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

Читать

История развития Django

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

Читать

Загрузка шаблонов Django

В Django предлагается удобный и мощный API для загрузки шаблонов из файловой системы. Он ставит целью устранить дублирование кода при загрузке шаблонов и в самих шаблонах.

Чтобы воспользоваться API загрузки шаблонов, нужно первым делом сообщить фреймворку, где хранятся шаблоны. Это задается в файле параметров settings.ру, о котором мы упоминали в предыдущей главе в связи с параметром R00T_URLC0NF.

Читать

Использование шаблонов в представлениях Django

Познакомившись с основами использования системы шаблонов, мы теперь применим свои знания к созданию представления. Вспомните представление current_datetime в модуле mysite.views, которое мы написали в предыдущей главе. Вот оно:

from django.http import HttpResponse import datetime

def current_datetime(request): now = datetime.datetime.now()

Читать

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

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

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

Читать

Простые шаблонные теги и фильтры Django

Мы уже отмечали, что в систему шаблонов уже встроен ряд тегов и фильтров. В следующих разделах мы приведем обзор наиболее употребительных.

Теги

В следующих разделах описаны часто используемые теги Django. if/else

Тег {% if %} вычисляет переменную, и если она равна True (то есть существует, не пуста и не равна булевскому значению False), то система выводит все, что находится между тегами {% if %} и {% endif %}, как в примере ниже:

Читать

Использование системы шаблонов Django

Сейчас мы приступим к изучению системы шаблонов, но пока не станем интегрировать ее с созданными в предыдущей главе представлениями. Наша цель — показать, как работает система шаблонов вне связи с другими частями фреймворка Django. (Обычно шаблоны используются совместно с представлениями, но мы хотим, чтобы вы поняли, что система шаблонов - просто библиотека на Python, применимая повсюду, а не только в представлениях Django.)

Читать

Шаблоны Django

Возможно, вас удивил способ, которым мы возвращали текст в примерах представлений из предыдущей главы. Мы встраивали HTML-раз- метку прямо в код на Python, например:

def current_datetime(request): now = datetime.datetime.now()

html = "<html><body>Cei/i4ac %s. </body></html>" % now return HttpResponse(html)

Читать