Введение в Django
Django — это полнофункциональный веб-фреймворк на языке Python, разработанный для быстрого и безопасного создания веб-приложений. Он обеспечивает разработчику структуру, основанную на принципе "не повторяй себя" (DRY), и предоставляет мощные инструменты, такие как ORM, маршрутизация, админка, шаблоны и система аутентификации из коробки. Django подходит как для небольших сайтов, так и для сложных корпоративных решений.
Архитектура и особенности Django
-
MTV-подход: Model-Template-View
-
ORM: работа с базой данных через Python-классы
-
Встроенная админка: автоматическое создание интерфейса управления данными
-
Безопасность: защита от XSS, CSRF, SQL-инъекций
-
Масштабируемость и производительность
-
Многофункциональность: поддержка REST API, аутентификации, миграций, мультиязычности
Установка и создание проекта
Установка Django:
Создание нового проекта:
Приложение будет доступно по адресу: http://127.0.0.1:8000/
Структура проекта Django
После создания проекта структура будет следующей:
-
manage.py
— интерфейс командной строки -
settings.py
— конфигурация проекта -
urls.py
— маршруты -
wsgi.py/asgi.py
— точка входа для серверов
Создание и настройка приложений
Создание нового приложения:
Добавление в INSTALLED_APPS
в settings.py
:
Маршруты и диспетчеризация URL
В urls.py
проекта:
В blog/urls.py
:
Работа с моделями и ORM
Модель в models.py
:
Применение миграций:
Административная панель
В admin.py
:
Создание суперпользователя:
Админка доступна по адресу: http://127.0.0.1:8000/admin/
Работа с шаблонами и HTML
Создание шаблона templates/blog/index.html
:
В views.py
:
Обработка форм и данных от пользователя
Использование встроенной формы:
Обработка в views.py
:
Работа с файлами и медиа
В settings.py
:
URL-конфигурация:
Аутентификация и авторизация
Django предоставляет систему пользователей:
-
Регистрация
-
Вход/выход
-
Разграничение прав (
login_required
,@permission_required
) -
Группы и разрешения
Создание REST API с Django REST Framework
Установка:
Добавление в INSTALLED_APPS
:
Создание сериализатора:
Создание API-представления:
Middleware и обработка запросов
Middleware — это обработчики запросов/ответов:
Подключение в settings.py
в MIDDLEWARE
.
Тестирование приложений
Создание тестов:
Запуск:
Развёртывание Django-проекта
Варианты:
-
Gunicorn + Nginx
-
Docker-контейнер
-
Heroku, Railway, Render
-
AWS, GCP, Azure
Примеры практического применения Django
-
Корпоративные порталы и CRM-системы
-
Новостные сайты и блоги
-
Электронная коммерция
-
REST API для мобильных приложений
-
Образовательные платформы и LMS
-
Бэкенд систем машинного обучения
Часто задаваемые вопросы
Что такое Django?
Полноценный фреймворк для создания веб-приложений на Python.
Чем отличается Django от Flask?
Django — фреймворк "из коробки", включающий все основные компоненты. Flask — микрофреймворк с минимальной базой.
Какие базы данных поддерживает Django?
SQLite, PostgreSQL, MySQL, Oracle.
Подходит ли Django для REST API?
Да, особенно с использованием Django REST Framework.
Поддерживает ли Django асинхронность?
С версии 3.1 — частичная поддержка ASGI и async views.
Полный справочник по ключевым функциям и модулям фреймворка Django
для Python
Установка
Создание проекта:
Создание приложения внутри проекта:
Структура проекта Django
Компонент | Назначение |
---|---|
models.py |
Описание структуры БД (ORM-модели). |
views.py |
Обработка логики и запросов. |
urls.py |
Маршруты URL для проекта и приложений. |
templates/ |
HTML-шаблоны. |
static/ |
Статические файлы (CSS, JS, изображения). |
admin.py |
Настройка интерфейса администратора. |
apps.py |
Конфигурация приложения. |
migrations/ |
Хранение миграций базы данных. |
Основные команды manage.py
Команда | Назначение |
---|---|
runserver |
Запуск локального сервера. |
startapp <name> |
Создание нового приложения. |
makemigrations |
Создание миграций из моделей. |
migrate |
Применение миграций к БД. |
createsuperuser |
Создание администратора. |
shell |
Запуск интерактивной оболочки с загрузкой Django. |
collectstatic |
Сборка всех статических файлов. |
Модели (models.py
)
Поле | Назначение |
---|---|
CharField(max_length) |
Строка фиксированной длины. |
TextField() |
Длинный текст. |
IntegerField() |
Целое число. |
DateTimeField(auto_now_add=True) |
Дата и время создания. |
BooleanField(default=False) |
Логическое значение. |
ForeignKey(...) |
Связь "многие к одному". |
Миграции базы данных
Представления (views.py
)
Маршрутизация (urls.py
)
В project/urls.py
:
В myapp/urls.py
:
Шаблоны (templates/
)
Файл