Проект и приложения
Django-проект содержит общие настройки сайта, а отдельные функциональные части обычно оформляют как приложения. Например, блог, каталог и учётные записи можно разделить на самостоятельные модули. Такое разделение помогает не складывать весь код в одну папку. Приложение может содержать модели, представления, маршруты, шаблоны и тесты, относящиеся к одной предметной области.
Маршрут и представление
Когда браузер обращается к адресу, Django сравнивает путь с таблицей URL-маршрутов. Найденный маршрут вызывает представление — функцию или класс, который решает, что вернуть пользователю. Представление может получить данные из базы, проверить параметры запроса и передать значения в шаблон. В простом случае оно возвращает HTML-страницу, но может также отдавать JSON или другой HTTP-ответ.
Модели и база данных
Модель описывает структуру данных через классы Python. Поля класса соответствуют данным, которые нужно хранить: тексту, числам, датам и связям между объектами. Django ORM переводит операции с объектами Python в запросы к базе. Это не отменяет необходимости понимать базы данных, но уменьшает количество ручного SQL в типичных задачах.
Шаблоны и разделение ответственности
Шаблон отвечает за отображение. В него передаются готовые данные, а сложную бизнес-логику лучше оставлять в Python-коде. Такое разделение упрощает поддержку: представление решает, какие данные нужны, модель работает с хранением, а шаблон формирует HTML. Если смешать всё в одном месте, даже маленький проект быстро становится неудобным.
Попробуйте на практике
Спроектировать простую страницу списка заметок в Django.
- Создайте мысленную модель Note с полями title и text.
- Опишите URL /notes/ для списка заметок.
- Запишите, что должно сделать представление: получить записи и передать их шаблону.
- Набросайте структуру шаблона, который выводит заголовок каждой заметки.
- Добавьте отдельный URL для просмотра одной заметки по идентификатору.
Как проверить результат. Схема верна, если понятно, какая часть отвечает за URL, получение данных, их хранение и HTML-вывод.
Частые вопросы
Django подходит только для больших сайтов?
Нет. Его можно использовать и для небольших проектов, хотя для совсем простых задач структура может показаться избыточной.
Нужно ли знать SQL?
Для старта ORM позволяет работать без большого количества SQL, но понимание баз данных и запросов сильно помогает при росте проекта.
Чем проект отличается от приложения?
Проект объединяет общую конфигурацию сайта, а приложение представляет отдельный функциональный модуль внутри него.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.