Ответ
Команда python manage.py runserver
запускает легковесный веб-сервер, предназначенный исключительно для разработки. Он не подходит для использования в production из-за низкой производительности и отсутствия проверок безопасности.
Процесс запуска:
-
Запуск WSGI-сервера. Django использует встроенный в Python модуль
wsgiref
для создания простого, однопоточного HTTP-сервера. Этот сервер реализует стандарт WSGI (Web Server Gateway Interface) для взаимодействия с самим Django-приложением. -
Привязка к адресу и порту (Binding). Сервер начинает "слушать" указанный IP-адрес и порт. По умолчанию это
127.0.0.1:8000
, что делает его доступным только на локальной машине.0.0.0.0:8000
делает сервер доступным со всех сетевых интерфейсов компьютера.
-
Обработка HTTP-запросов. При поступлении HTTP-запроса сервер передаёт его Django-приложению. Далее запрос проходит через стандартный цикл Django: middleware, URL-маршрутизатор, view-функция и возвращается в виде HTTP-ответа.
Пример запуска:
# Запуск на стандартном порту 8000, доступен только локально
python manage.py runserver
# Запуск на порту 8080, доступен из локальной сети
python manage.py runserver 0.0.0.0:8080
Важные моменты:
- Если указанный порт уже занят другим процессом, возникнет ошибка
OSError: [Errno 98] Address already in use
. - Для production-окружения используется связка из Application Server (например, Gunicorn или uWSGI) и Web Server (например, Nginx).