Django использует основанную на компонентах архитектуру «без разделения ресурсов» (каждая часть архитектуры независит от других частей и поэтому может быть заменена или изменена). При конкретном разделение между различными частями означает, что он может масштабироваться для увеличения трафика добавлением оборудования на одном из уровней: серверы кэширования, серверы баз данных или серверы приложений. Некоторые из самых загруженных сайтов успешно масштабировали Django, чтобы удовлетворить их требования (например, Instagram).
Код Django использует принципы и шаблоны проектирования, которые позволяют создание поддерживаемого и повторно используемого кода. Например, он использует принцип «Не повторяйся», поэтому не нужно дублирование и это сокращает объем кода. Django способствует группированию связанных функциональных возможностей в повторно используемые «приложения» и, на более низком уровне, группирует связанный код в модули (в соответствии с шаблоном Model View Controller).
|
|
Django написан на Python, который работает на многих платформах. Поэтому нет привязанности к какой-либо конкретной серверной платформе и можно запускать свои приложения на других версиях Linux. Также Django хорошо поддерживается многими провайдерами веб-хостинга, которые предоставляют определенную инфраструктуру и документация для размещения сайтов Django.
Сам механизм разрешения URL-адрес URL Conf - это файлы urls.py, которые могут иметь отношение к проекту или приложению.
Приложение - это часть проекта, которая реализует свою отдельную функциональность. Пример приложения - django.contrib.admin, который предоставляет административную панель для сайта. Приложение напоминает проекты по своей структуре, за исключением того, что у приложений нет файла settings.py и сценария manage.py, который обеспечивает интерфейс для взаимодействия с проектом: запуск интерактивной консоли, запуск тестового сервера,управление файлами статистики и сеансами, запуск автоматизированных тестов. Приложения состоят из следующих частей:
models.py - объявление моделей, классов, описывающих таблицы в базах данных. Модели не привязаны к отдельной СУБД, поэтому разработчик может установить то или иное приложение, не опасаясь, что оно несовместимо с его СУБД. Это достигается с помощью коннекторов Python на основе которых, Django построил свою объектно-реляционную модель.
urls.py – описания URL-шаблонов для определения контроллеров.
tests.py – описание автоматизированных тестов для приложения.
apps.py – описание конфигурации приложения.
views.py – описание контроллеров (в Django они называются View, хотя в MVC View означает готовую для отображения страницу)
admin.py – регистрация моделей в административной панели.
Архитектура проекта Django показана на рис. 2.3.
Рисунок2.3 - Архитектура проекта Django.