Что такое Django

⏱ 12 мин · 🧩 заданий: 5

Зачем нужен фреймворк

Чтобы сделать динамический сайт с нуля, придётся решить кучу задач: разобрать HTTP-запрос, понять, какую страницу хочет пользователь, подключиться к базе данных, защититься от взлома, проверить пароль, собрать HTML…

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

Django в двух словах

Django — бесплатный фреймворк с открытым исходным кодом на Python. Его создали в 2003–2005 годах разработчики новостного сайта в Канзасе, которым нужно было очень быстро выпускать новые разделы. Отсюда девиз:

«The web framework for perfectionists with deadlines» — веб-фреймворк для перфекционистов с дедлайнами.

На Django работают Instagram, Pinterest, Mozilla, Disqus, сайты NASA и тысячи других.

Философия

  • Batteries included («батарейки в комплекте»). Всё необходимое уже есть: ORM, админка, аутентификация, формы, шаблоны, кэширование, защита от CSRF/XSS/SQL-инъекций, локализация.
  • DRY — Don't Repeat Yourself. Описали модель один раз — и из неё получили таблицу в базе, форму, админку и API.
  • Явное лучше неявного — принцип из «Дзена Python».
  • Слабая связанность. Части фреймворка независимы: можно заменить шаблонизатор или базу данных.

Что внутри

Компонент Что делает
ORM Работа с базой данных через Python-классы вместо SQL
Миграции Автоматическое изменение структуры БД при изменении моделей
URL dispatcher Сопоставляет адрес страницы с кодом, который её обрабатывает
Views Функции/классы, принимающие запрос и возвращающие ответ
Шаблоны HTML со вставками переменных, циклов и условий
Формы Генерация HTML-форм, валидация данных
Admin Готовая панель управления данными
Auth Пользователи, группы, права, вход/выход

Проект и приложения

В Django есть два важных понятия:

  • Проект — весь сайт целиком: настройки, главный файл маршрутов.
  • Приложение (app) — отдельный модуль с определённой функцией: блог, магазин, профили. Приложения можно переиспользовать между проектами.
mysite/            ← проект
├── manage.py
├── mysite/        ← настройки проекта
│   ├── settings.py
│   └── urls.py
├── blog/          ← приложение «блог»
└── accounts/      ← приложение «аккаунты»

Кстати, сайт, на котором вы сейчас учитесь, тоже так устроен: приложение courses отвечает за курсы и задания, accounts — за регистрацию.

Путь запроса

Браузер ──HTTP──▶ Веб-сервер ──▶ Django
                                   │
                         middleware (сессии, безопасность)
                                   │
                         urls.py: какой view вызвать?
                                   │
                         view: логика ─▶ models ─▶ БД
                                   │
                         template: собрать HTML
                                   │
Браузер ◀──HTTP── HttpResponse ◀───┘

Каждый следующий урок будет разбирать один из этих блоков подробнее.

Итог

  • Django — «фреймворк с батарейками» на Python для быстрой разработки надёжных сайтов.
  • Главные принципы: DRY, явное лучше неявного, слабая связанность.
  • Сайт = проект, состоящий из приложений.
  • Запрос проходит путь: URL → view → модели/шаблоны → ответ.

Практика решено 0 из 5

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Один вариант ответа

На каком языке программирования написан Django?

Задание 2 Несколько вариантов

Что входит в Django «из коробки», без установки сторонних пакетов?

Задание 3 Ввод ответа

Как расшифровывается принцип DRY, которому следует Django? (три английских слова)

Задание 4 Расставить по порядку

Расставьте шаги обработки запроса в Django.

  1. Вызывается функция-представление (view)
  2. View получает данные через модели и рендерит шаблон
  3. Диспетчер URL находит подходящий маршрут в urls.py
  4. Веб-сервер передаёт запрос в Django, создаётся объект HttpRequest
  5. Django возвращает объект HttpResponse
  6. Запрос проходит через middleware
Задание 5 Один вариант ответа

Какой из этих сайтов изначально построен на Django?

Войдите, чтобы отмечать пройденные уроки.