Django-Admin.ru
Django · Основы Django★ Руководство

Django для начинающих: что это за фреймворк и с чего начать

Что такое фреймворк Django и как его изучать с нуля: установка, проект и приложения, модели, view, шаблоны, админка, API и деплой — с примерами кода.

Редакция Django-Admin.ru
· обновлено · 14 мин чтения

Содержание · 17 разделов
  1. Что такое Django
  2. Что входит в Django из коробки
  3. Для чего используют Django
  4. Django, Flask или FastAPI
  5. Что нужно знать перед изучением Django
  6. Какая версия Django нужна
  7. Как устроен Django: путь запроса и MTV
  8. Установка Django
  9. Создание проекта
  10. settings.py в двух словах
  11. Создание приложения
  12. Первое приложение: модель, view, URL и шаблон
  13. Модель и миграции
  14. Представления (views)
  15. Маршруты (URL)
  16. Шаблоны
  17. Админка Django
  18. Пользователи, вход и права
  19. Django как бэкенд: REST API
  20. Деплой и фоновые задачи
  21. Как создать сайт на Django: общий план
  22. Как стать Django-разработчиком
  23. Маршрут изучения Django с нуля
  24. Частые вопросы
  25. Django — это язык программирования?
  26. Как правильно: Django или Джанго?
  27. Сложно ли изучить Django с нуля?
  28. Нужно ли знать JavaScript?
  29. Подходит ли Django для больших проектов?
  30. Поддерживает ли Django асинхронность?
  31. Итог

Django (джанго) — бесплатный веб-фреймворк на языке Python для создания сайтов и бэкенда веб-приложений. Фреймворк Django берёт на себя рутину — маршрутизацию URL, работу с базой данных, формы, пользователей, защиту от типовых атак и даже готовую админку, — а вы пишете только логику своего проекта.

Начать можно за пять минут:

python -m pip install django
django-admin startproject config .
python manage.py migrate
python manage.py runserver

Это руководство — карта для тех, кто изучает Django с нуля. Мы кратко разберём каждую тему, которая понадобится начинающему бэкенд-разработчику, соберём маленькое работающее приложение и дадим ссылки на подробные статьи по каждому шагу. Примеры проверены на Django 6.1 и 5.2 LTS.

Что такое Django

Django — это фреймворк, то есть готовый каркас приложения с набором инструментов и правилами, куда их подключать. Языком программирования Django не является: весь код в Django-проекте пишется на Python. Поэтому запросы вроде «джанго язык программирования» обычно означают связку Python + Django — язык и фреймворк на нём.

Немного фактов:

  • Django появился в редакции американской газеты Lawrence Journal-World и в 2005 году стал проектом с открытым исходным кодом. Назван в честь джазового гитариста Джанго Рейнхардта.
  • Распространяется по лицензии BSD — бесплатно, в том числе для коммерческих проектов.
  • Развитием занимается некоммерческая организация Django Software Foundation и сообщество.
  • Девиз «batteries included» («батарейки в комплекте»): многое, что в других фреймворках подключают отдельными библиотеками, в Django уже есть.

Что входит в Django из коробки

КомпонентДля чего
ORM и миграцииРабота с базой данных через Python-классы, без ручного SQL
URL-диспетчерСопоставление адресов страниц с обработчиками
ШаблонизаторHTML-страницы с переменными, циклами и наследованием
ФормыОтрисовка, валидация и обработка данных от пользователя
АутентификацияПользователи, группы, права, вход и выход, хеширование паролей
Админка (Django Admin)Готовый интерфейс для управления данными
БезопасностьЗащита от CSRF, XSS, SQL-инъекций и clickjacking по умолчанию
ИнтернационализацияПереводы интерфейса, форматы дат и чисел, часовые пояса
Кеширование, почта, сигналыТиповые задачи веб-приложения без сторонних пакетов

Официально поддерживаемые базы данных — PostgreSQL, MariaDB, MySQL, Oracle и SQLite. Для обучения подходит SQLite: она встроена в Python и не требует установки.

Для чего используют Django

Бэкенд на Django — основная сфера применения фреймворка:

  • сайты с серверной отрисовкой — медиа, блоги, каталоги, личные кабинеты, сервисы с формами;
  • бэкенд и REST API для фронтенда на React или Vue и мобильных приложений — обычно вместе с Django REST Framework;
  • внутренние системы — CRM, бэк-офис, панели модерации, где админка Django экономит месяцы разработки;
  • CMS и контентные проекты — на Django построены Wagtail и django CMS (как выбрать между ними — в сравнении CMS на Django).

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

Django, Flask или FastAPI

ФреймворкПодходКогда выбирать
DjangoВсё включено: ORM, админка, auth, формы, шаблоныСайты и бэкенд с базой данных, админкой и пользователями
FlaskМинимальное ядро, остальное — расширенияНебольшие сайты и сервисы, полный контроль над стеком
FastAPIАсинхронные API с валидацией через PydanticAPI-first проекты, микросервисы, высокая конкурентность

Подробное сравнение — в статье «FastAPI, Django или Flask: что выбрать» и обзоре веб-фреймворков Python.

Что нужно знать перед изучением Django

Django — фреймворк для Python, поэтому сначала нужна база языка: переменные, функции, списки и словари, классы, импорты, исключения. Если вы только начинаете, пройдите Python для начинающих, а потом возвращайтесь к Django.

Кроме Python пригодятся:

  • основы HTML и CSS — чтобы писать шаблоны;
  • понимание HTTP: что такое запрос, ответ, методы GET и POST, коды 200/404/500;
  • базовые представления о реляционных базах данных: таблицы, первичные и внешние ключи;
  • командная строка и виртуальные окружения Python.

Какая версия Django нужна

ВерсияPythonСтатус
Django 6.13.12+актуальный выпуск
Django 6.03.12+предыдущий выпуск ветки 6.x
Django 5.2 LTS3.10+версия с длительной поддержкой

Для обучения берите актуальную версию: она ставится по умолчанию командой pip install django на Python 3.12 и новее. Основы, которые описаны в этом руководстве, одинаково работают в 5.2 и 6.x. Различия заметны в деталях: с Django 6.0 настройка DEFAULT_AUTO_FIELD по умолчанию равна BigAutoField и исчезла из шаблона settings.py, а в Django 6.1 появилась настройка MAILERS — она заменит EMAIL_BACKEND и связанные параметры EMAIL_*, которые теперь объявлены устаревшими.

Как устроен Django: путь запроса и MTV

Django построен по схеме MTV — Model, Template, View:

  • Model (модель) — данные и правила работы с ними; класс Python, которому соответствует таблица в базе.
  • View (представление) — функция или класс, которые принимают HTTP-запрос и возвращают ответ.
  • Template (шаблон) — HTML с подстановкой данных.

Путь одного запроса выглядит так:

Браузер
  → WSGI/ASGI-сервер (runserver, Gunicorn, Uvicorn)
  → middleware (сессии, CSRF, пользователь…)
  → urls.py: какой view обработает адрес
  → view: бизнес-логика, запрос к моделям через ORM
  → шаблон: HTML с данными
  → middleware в обратном порядке
  → ответ браузеру

Каждое звено этой цепочки — отдельная тема для изучения. Middleware — слой, через который проходят все запросы и ответы: он добавляет request.user, проверяет CSRF-токены, выставляет заголовки безопасности. Как он работает и как написать свой — в статье «Django Middleware».

Установка Django

Создайте папку проекта и виртуальное окружение, затем установите Django через pip.

Windows:

mkdir mysite
cd mysite
py -m venv .venv
.venv\Scripts\activate
python -m pip install django

macOS и Linux:

mkdir mysite
cd mysite
python3 -m venv .venv
source .venv/bin/activate
python -m pip install django

Проверьте установку командой python -m django --version. Выбор версии, requirements.txt и разбор ошибок вроде «django-admin не распознано» — в статье «Как установить Django». Если Python ещё не установлен, начните с установки Python.

Создание проекта

Проект — это сайт целиком: настройки, корневые URL, точки входа для серверов. Создаётся он командой startproject:

django-admin startproject config .
python manage.py migrate
python manage.py runserver

Откройте http://127.0.0.1:8000/ — увидите стартовую страницу Django. Структура проекта:

mysite/
├── manage.py          # запуск команд: runserver, migrate, startapp…
└── config/
    ├── settings.py    # настройки проекта
    ├── urls.py        # корневые маршруты
    ├── asgi.py        # точка входа для ASGI-серверов
    └── wsgi.py        # точка входа для WSGI-серверов

Разбор каждого файла, запуск на другом порту и запуск уже существующего проекта — в статье «Как создать проект Django».

settings.py в двух словах

Все настройки проекта живут в одном модуле. Начинающему важно знать несколько из них:

  • INSTALLED_APPS — подключённые приложения, свои и встроенные;
  • DATABASES — подключение к базе данных (по умолчанию SQLite-файл db.sqlite3);
  • DEBUG — режим отладки с подробными страницами ошибок; в продакшне всегда False;
  • ALLOWED_HOSTS — домены, на которых разрешено работать сайту;
  • LANGUAGE_CODE и TIME_ZONE — язык интерфейса и часовой пояс, например 'ru' и 'Europe/Moscow'.

Как читать настройки в своём коде через django.conf.settings, что делает DJANGO_SETTINGS_MODULE и как разделить конфигурацию для разработки и продакшна — в статье «settings.py в Django».

Создание приложения

Функциональность сайта пишут в приложениях — модулях с одной областью ответственности: блог, каталог, личный кабинет. Создадим приложение blog:

python manage.py startapp blog

И зарегистрируем его:

# config/settings.py
INSTALLED_APPS = [
    # ...встроенные приложения...
    'blog',
]

Чем приложение отличается от проекта, что лежит в каждом файле и как вынести приложения в подпапку — в статье «Как создать приложение в Django».

Первое приложение: модель, view, URL и шаблон

Соберём минимальный блог: список постов и страница поста.

Модель и миграции

# blog/models.py
from django.db import models


class Post(models.Model):
    title = models.CharField('Заголовок', max_length=200)
    text = models.TextField('Текст')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created_at']

    def __str__(self):
        return self.title

Модель описывает таблицу, а миграции создают её в базе:

python manage.py makemigrations blog
python manage.py migrate

Поля, связи между моделями и параметры Meta разобраны в статье «Модели Django». Как фильтровать, сортировать и агрегировать данные — в шпаргалке по Django ORM и QuerySet.

Представления (views)

# blog/views.py
from django.shortcuts import get_object_or_404, render

from .models import Post


def post_list(request):
    posts = Post.objects.all()
    return render(request, 'blog/post_list.html', {'posts': posts})


def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

get_object_or_404 вернёт ответ 404, если поста с таким pk нет, — вместо ошибки сервера.

Маршруты (URL)

# blog/urls.py
from django.urls import path

from . import views

app_name = 'blog'

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('<int:pk>/', views.post_detail, name='post_detail'),
]
# config/urls.py
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

Конвертер <int:pk> в адресе /blog/1/ извлекает число и передаёт его во view аргументом pk. Остальные конвертеры, reverse() и разбор ошибки NoReverseMatch — в статье об URL-маршрутах в Django.

Шаблоны

Шаблоны приложения лежат в blog/templates/blog/:

<!-- blog/templates/blog/post_list.html -->
<h1>Блог</h1>
<ul>
  {% for post in posts %}
  <li><a href="{% url 'blog:post_detail' post.pk %}">{{ post.title }}</a></li>
  {% empty %}
  <li>Постов пока нет.</li>
  {% endfor %}
</ul>
<!-- blog/templates/blog/post_detail.html -->
<h1>{{ post.title }}</h1>
{{ post.text|linebreaks }}
<a href="{% url 'blog:post_list' %}">Все посты</a>

Двойные фигурные скобки выводят переменную, теги в {% %} управляют логикой, а фильтр linebreaks превращает переносы строк в абзацы. Шаблонизатор по умолчанию экранирует HTML, поэтому текст пользователя не сможет внедрить скрипт на страницу.

Запустите python manage.py runserver и откройте http://127.0.0.1:8000/blog/. Постов пока нет — добавим их через админку.

Админка Django

Админка — одна из главных причин выбрать Django. Зарегистрируйте модель:

# blog/admin.py
from django.contrib import admin

from .models import Post


@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'created_at']
    search_fields = ['title']

Создайте администратора и войдите на http://127.0.0.1:8000/admin/:

python manage.py createsuperuser

Теперь посты можно создавать, искать и редактировать через готовый интерфейс. Подробности о создании администратора — в статье «Как создать суперпользователя Django», а настройка списков, фильтров, инлайнов и действий — в полном руководстве по Django Admin.

Пользователи, вход и права

Приложение django.contrib.auth подключено в каждом новом проекте. Оно хранит пользователей и группы, хеширует пароли, проверяет права и даёт готовые view для входа, выхода и смены пароля. Закрыть страницу от анонимных посетителей можно одним декоратором:

from django.contrib.auth.decorators import login_required


@login_required
def profile(request):
    ...

Регистрация, своя модель пользователя и права доступа — в статье «Аутентификация в Django».

Django как бэкенд: REST API

Если фронтенд написан на JavaScript-фреймворке или есть мобильное приложение, Django выступает чистым бэкендом и отдаёт данные в JSON. Стандартный инструмент для этого — Django REST Framework (DRF): сериализаторы, ViewSet, роутеры, аутентификация по токенам и браузерная документация API. С него начинается работа с API на Django — см. руководство по Django REST Framework.

Деплой и фоновые задачи

runserver предназначен только для разработки. В продакшне Django-приложение запускают под сервером приложений (Gunicorn для WSGI, Uvicorn для ASGI) за веб-сервером Nginx, который раздаёт статику и терминирует HTTPS. Перед запуском собирают статику (collectstatic), выключают DEBUG и выносят секреты в переменные окружения. Пошаговая инструкция — в статье «Деплой Django: Gunicorn и Nginx».

Долгие операции — отправку писем, генерацию отчётов, обработку файлов — выносят в фоновые задачи, чаще всего на Celery.

Как создать сайт на Django: общий план

Создание сайта на Django обычно идёт в таком порядке:

  1. Установить Python и Django в виртуальное окружение.
  2. Создать проект (startproject) и настроить язык, часовой пояс и базу данных.
  3. Разбить функциональность на приложения (startapp) и описать модели.
  4. Выполнить миграции и настроить админку для наполнения контентом.
  5. Написать view, URL и шаблоны; вынести общий макет в базовый шаблон с наследованием {% extends %}.
  6. Подключить статику (CSS, JavaScript, изображения) и формы.
  7. Добавить пользователей: регистрацию, вход, права.
  8. Покрыть ключевую логику тестами: встроенный python manage.py test или pytest-django.
  9. Развернуть проект на сервере с Gunicorn и Nginx.

Весь путь от пустой папки до готового к деплою каталога с формой заявки показан в пошаговом руководстве по созданию сайта на Django. Отдельные пункты раскрыты в статьях раздела Django и кластера основ Django.

Как стать Django-разработчиком

Вакансии «Python/Django разработчик» и «бэкенд-разработчик на Django» обычно предполагают такой набор навыков:

  • уверенный Python: ООП, исключения, генераторы, аннотации типов;
  • Django: модели и ORM, миграции, class-based views, формы, админка, auth, middleware;
  • Django REST Framework и проектирование REST API;
  • PostgreSQL и SQL, понимание индексов и проблемы N+1 запросов;
  • тестирование (unittest, pytest), Git, Docker;
  • фоновые задачи (Celery, Redis), кеширование;
  • деплой: Linux, Nginx, Gunicorn, переменные окружения, логирование.

Учиться эффективнее на своём проекте: блог, трекер задач, интернет-магазин с корзиной, API для мобильного приложения. Пет-проект на GitHub, развёрнутый на сервере, — сильный аргумент на собеседовании.

Маршрут изучения Django с нуля

ЭтапЧто изучитьСтатья
1Установка Django, виртуальное окружениеКак установить Django
2Проект, manage.py, settings.py, runserverКак создать проект Django
3Приложения, view, URL, шаблоныКак создать приложение в Django
4Модели, миграции, QuerySetШпаргалка по Django ORM
5Админка и суперпользовательРуководство по Django Admin
6Пользователи, вход, праваАутентификация в Django
7Middleware и путь запросаDjango Middleware
8REST APIDjango REST Framework
9Деплой в продакшнДеплой Django: Gunicorn и Nginx

Параллельно читайте официальную документацию Django — особенно пошаговый туториал и раздел «Topics». Где найти переводы на русский и как выбрать в документации нужную версию — в статье «Документация Django на русском».

Частые вопросы

Django — это язык программирования?

Нет. Django — фреймворк, а язык — Python. Чтобы писать на Django, нужно знать Python; HTML, CSS и SQL понадобятся на базовом уровне.

Как правильно: Django или Джанго?

Пишется Django, читается «джанго» — первая буква «D» не произносится, как и в имени гитариста Джанго Рейнхардта.

Сложно ли изучить Django с нуля?

Если вы уверенно владеете основами Python, первое работающее приложение получится за вечер, а уверенная работа с моделями, формами и админкой — за несколько недель практики. Сложнее всего новичкам даются ORM-запросы и путь запроса через URL, middleware и view — с них и стоит начинать углубление.

Нужно ли знать JavaScript?

Для сайтов с серверной отрисовкой — нет: страницы собираются шаблонами Django. Живой поиск, подгрузку списков и отправку форм без перезагрузки страницы можно сделать на HTMX с Django без своего JavaScript-кода. Полноценный JavaScript понадобится для сложного интерактивного интерфейса, а если фронтенд пишет отдельная команда, Django-разработчик отвечает за API.

Подходит ли Django для больших проектов?

Да. Фреймворк используют в крупных медиа, финтехе и SaaS-сервисах. Масштабируемость определяется архитектурой: оптимизацией запросов к базе, кешированием, фоновыми задачами и горизонтальным масштабированием серверов приложений.

Поддерживает ли Django асинхронность?

Да: Django работает под ASGI-серверами и поддерживает асинхронные view и middleware, а у ORM есть асинхронные методы вроде aget() и acount(). Для WebSocket используют пакет Django Channels.

Итог

Django — фреймворк для Python, который закрывает типовые задачи веб-разработки «из коробки»: ORM, админку, пользователей, формы и безопасность. Начните с установки Django, создайте проект и первое приложение, а затем по маршруту выше переходите к ORM, админке, API и деплою.

Все статьи по основам собраны в разделе «Django для начинающих».

  • #Django
  • #Python
  • #Для начинающих
  • #Веб-разработка
  • #Backend
↑ ↓ выборEnter открытьEsc закрыть