logo
Разработка Web-приложения для создания презентаций

2.6 Написание серверной логики

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

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

Предположим, что страницы будут располагаться по адресу «http://example.com /<страница>/». Для формирования такого пути используется поле «slug», предусмотренное в таблице Page в п. 2.3 данного документа. Вместо метки «<страница>» в URL используется идентификатор, записанный в поле «slug». Это связано с особенностью формирования ЧПУ, которые важны как для удобства пользователя, так и для поисковой оптимизации [11]. Иными словами, если у страницы указан идентификатор «o-proecte», то его страница будет доступна по адресу «http://example.com/ o-proecte/». Описанию такого пути соответствует регулярное выражение «^/(?P<slug>[-w]+)/$» [37].

Список регулярных выражений, отвечающих за формирование URL, записывается в особую структуру, представленную на рисунке Е.5 из приложения Е. При совпадении URL с запрашиваемым, данная структура автоматически вызовет функцию, возвращающую страницу, которая в данном случае представлена методом «as_view()» класса «PageDetail». Метод описания представлений в виде классов - одна из новых особенностей Django, позволяющих значительно сократить количество кода [21].

Описание представления показано на рисунке Е.6 из приложения Е. Как видно из приведенного примера, для описания требуется указать лишь шаблон вывода данных и модель таблицы, в которой данные хранятся (в данном случае указан шаблон, код которого приведен на рисунке Е.3 из приложения Е и таблица Page). Необходимое автоматически выбирается из базы по указанному идентификатору («slug») в URL.

После выбора блюда из базы оно представляется в виде объекта со свойствами и передается шаблонизатору и советующие переменные в шаблоне (в данном случае {{ object.title }} и {{ object.text }} как указано коде шаблона на рисунке Е.3 в приложении Е) заменяются на соответствующие значения из базы данных.