Команда запуска сервера разработки Django: manage.py runserver
Запуск сервера разработки Django: manage.py runserver
Основной и наиболее распространённый способ запуска встроенного сервера разработки Django - выполнить команду python manage.py runserver в корне проекта, где находится файл manage.py. По умолчанию сервер запускается на локальном адресе 127.0.0.1:8000, доступен только с той же машины и автоматически перезагружается при изменениях в коде (кроме добавления новых файлов). Этот вариант подходит для ежедневной разработки, когда не требуется доступ извне или нестандартные настройки.
cd myproject
python manage.py runserverBackend python django (backend на django с python)
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). March 20, 2025 - 14:30:00 Django version 5.0, using settings 'myproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
веб библиотека python (веб-библиотека python (фреймворк))
После запуска откройте в браузере http://127.0.0.1:8000/. Для остановки нажмите Ctrl+C. Если не активировано виртуальное окружение, сначала выполните его активацию (например, source venv/bin/activate).
Как изменить порт сервера разработки?
Укажите номер порта после команды: python manage.py runserver 8080. Сервер запустится на 127.0.0.1:8080. Это полезно, когда порт 8000 уже занят другим процессом или требуется одновременный запуск нескольких проектов.
python manage.py runserver 9090Html python code (встраивание python кода в html)
Starting development server at http://127.0.0.1:9090/
Flask на языке python (flask на python)
Как сделать сервер доступным для других устройств в локальной сети?
Свяжите сервер с адресом 0.0.0.0, чтобы он принимал запросы с любого сетевого интерфейса: python manage.py runserver 0.0.0.0:8000. После этого другие компьютеры смогут обращаться к вашему IP (например, http://192.168.1.10:8000/). Не забудьте указать IP машины в ALLOWED_HOSTS в настройках проекта, иначе Django отклонит запросы.
python manage.py runserver 0.0.0.0:8000Python manage py runserver (запуск сервера разработки django через manage.py runserver)
Starting development server at http://0.0.0.0:8000/
Как отключить автоматическую перезагрузку при изменениях кода?
Флаг --noreload предотвращает перезапуск сервера при изменении файлов. Это необходимо при отладке с помощью точек останова (например, в PyCharm или pdb), чтобы не терять контекст выполнения.
python manage.py runserver --noreload
Starting development server at http://127.0.0.1:8000/ No reloader active. Server will not restart on file changes.
Как заставить сервер раздавать статические файлы при выключенном режиме отладки?
Используйте флаг --insecure. По умолчанию, когда DEBUG = False, Django не обслуживает статику через сервер разработки. Этот флаг принудительно включает раздачу статики, что удобно для предварительного просмотра сайта «как в продакшене» без настройки nginx.
python manage.py runserver --insecure
Django will serve static files with '--insecure' for development only. Use 'collectstatic' in production. Starting development server at http://127.0.0.1:8000/
Как запустить сервер с альтернативным файлом настроек?
Параметр --settings=путь.к.настройкам позволяет указать другой модуль конфигурации. Например, для тестирования продакшен-настроек локально: python manage.py runserver --settings=myproject.settings_prod. Флаг полезен при наличии нескольких конфигураций (dev, prod, staging).
python manage.py runserver --settings=myproject.settings_prod
Starting development server at http://127.0.0.1:8000/ Using settings module 'myproject.settings_prod'.
Как пропустить системные проверки (checks) при запуске?
Флаг --skip-checks отключает выполнение системных проверок (например, предупреждений о миграциях, неиспользуемых переменных). Ускоряет запуск, но не рекомендуется при активной разработке, так как можно пропустить важные предупреждения.
python manage.py runserver --skip-checks
Starting development server at http://127.0.0.1:8000/ (No system checks performed)
Как увеличить детализацию вывода в консоли?
Флаг --verbosity принимает значения от 0 (минимальный) до 3 (максимальный). Уровень 3 выводит отладочную информацию, включая запросы и ответы. Полезно для глубокой диагностики.
python manage.py runserver --verbosity 3
Как добавить дополнительный путь для импорта модулей?
Параметр --pythonpath добавляет указанный каталог в sys.path. Это может пригодиться, если проект организован нестандартно или библиотеки лежат вне виртуального окружения.
python manage.py runserver --pythonpath=/extra/libs
Как использовать расширенный сервер разработки (runserver_plus)?
Установите пакет django-extensions: pip install django-extensions, добавьте его в INSTALLED_APPS. Затем команда python manage.py runserver_plus запускает сервер с интерактивным отладчиком (Werkzeug), улучшенной страницей ошибок и возможностью просмотра контекста переменных.
pip install django-extensions
python manage.py runserver_plus
Starting development server at http://127.0.0.1:8000/ Interactive debugger enabled at http://127.0.0.1:8000/__debug__/ Django Extensions 3.2.3
Как запустить сервер разработки с поддержкой HTTPS?
Для имитации продакшен-среды с HTTPS используйте пакет django-sslserver: pip install django-sslserver, добавьте его в INSTALLED_APPS, после чего команда python manage.py runsslserver запустит сервер на https://127.0.0.1:8000/ с самозаверенным сертификатом. Альтернативно, runserver_plus поддерживает собственные сертификаты через флаги --cert-file и --key-file.
pip install django-sslserver
python manage.py runsslserver
Starting development server at https://127.0.0.1:8000/ Using SSL certificate: sslserver/certs/development.crt
Типичные проблемы и ошибки
Ошибка «Error: That port is already in use» - выбранный порт занят другим приложением. Решение: смените порт (например, runserver 8001) или завершите процесс, использующий порт. В Linux найдите PID командой lsof -i :8000 и убейте его (kill -9 PID).
Ошибка «Error: That IP address can't be assigned to» - указан недоступный IP-адрес (например, 0.0.0.0, если интерфейс отключён или нет прав). Решение: используйте 127.0.0.1 или конкретный IP вашего сетевого интерфейса.
Предупреждение «You have 18 unapplied migration(s)» - не выполнены миграции базы данных. Выполните python manage.py migrate. Это не останавливает сервер, но может вызвать ошибки при обращении к несуществующим таблицам.
Ошибка «ModuleNotFoundError: No module named ...» - отсутствует зависимость или неправильно настроено окружение. Убедитесь, что виртуальное окружение активировано и все пакеты установлены (pip install -r requirements.txt). Проверьте PYTHONPATH.
Ошибка «Invalid HTTP_HOST header: ...» - запрос с хоста, не указанного в ALLOWED_HOSTS. Добавьте нужный хост в список в настройках проекта или разрешите все ['*'] (только для разработки).
Сервер не запускается - забыли активировать виртуальное окружение - в большинстве проектов интерпретатор Python из окружения требуется явно активировать: source venv/bin/activate (Linux/macOS) или venv\Scripts\activate (Windows).
Расширенные примеры запуска сервера разработки Django
Пример 1. Базовый запуск с детальным выводом
Запустите сервер на стандартном порту и просмотрите все этапы загрузки:
cd ~/projects/myblog
python manage.py runserver
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). March 20, 2025 - 15:00:00 Django version 5.0, using settings 'myblog.settings' Starting development server at http://127.0.0.1:8000/ [15:00:05] GET / 200 OK (0.003s) [15:00:12] GET /admin/ 302 Found (0.001s)
Сервер выводит все HTTP-запросы. Для остановки нажмите Ctrl+C.
Пример 2. Запуск с внешним доступом и нестандартным портом
Настройте сервер для приёма запросов из локальной сети на порту 8080 и добавьте хост в ALLOWED_HOSTS:
# В settings.py:
ALLOWED_HOSTS = ['192.168.1.10', 'localhost', '127.0.0.1']
# В терминале:
python manage.py runserver 0.0.0.0:8080
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). Django version 5.0, using settings 'myproject.settings' Starting development server at http://0.0.0.0:8080/ Quit the server with CONTROL-C.
Теперь другие устройства могут обращаться по адресу http://192.168.1.10:8080/.
Пример 3. Отладка с точками останова (--noreload и pdb)
Создайте в представлении точку останова с помощью import pdb; pdb.set_trace():
# views.py
from django.http import HttpResponse
def index(request):
import pdb; pdb.set_trace()
return HttpResponse("Hello")
# Запуск с --noreload:
python manage.py runserver --noreload
Starting development server at http://127.0.0.1:8000/ [15:10:00] GET / 200 OK (0.001s) # сервер не перезагружается после изменений в коде # При запросе к / откроется интерактивная консоль pdb:
Сервер не перезапускается при изменении кода, поэтому отладчик остаётся активным.
Пример 4. Раздача статики через --insecure при DEBUG=False
Временно отключите DEBUG в settings.py и запустите сервер с флагом --insecure:
# settings.py
DEBUG = False
ALLOWED_HOSTS = ['*']
# Команда:
python manage.py runserver --insecure
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). Django will serve static files with '--insecure' for development only. Use 'collectstatic' in production. Starting development server at http://127.0.0.1:8000/
Статические файлы (CSS, JS, изображения) будут раздаваться сервером, несмотря на DEBUG=False.
Пример 5. Использование альтернативных настроек для продакшен-конфигурации
Создайте файл настроек settings_prod.py и запустите с ним сервер для локального тестирования:
# myproject/settings_prod.py
from .settings import *
DEBUG = False
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'prod_db',
}
}
# Запуск:
python manage.py runserver --settings=myproject.settings_prod 8081
Starting development server at http://127.0.0.1:8081/ System check identified no issues (0 silenced). Using settings module 'myproject.settings_prod'.
Пример 6. runserver_plus из django-extensions с интерактивным отладчиком
Установите расширение, добавьте его в INSTALLED_APPS и запустите:
pip install django-extensions
# settings.py:
INSTALLED_APPS = [
...
'django_extensions',
]
# Запуск:
python manage.py runserver_plus
Starting development server at http://127.0.0.1:8000/ Interactive debugger enabled at http://127.0.0.1:8000/__debug__/ Django Extensions 3.2.3 [15:20:00] GET / 500 Error: 'name' is not defined # Ошибка отображается на странице с контекстом переменных.
При возникновении ошибки откроется страница Werkzeug Debugger, позволяющая просмотреть стек трейс и переменные.
Пример 7. Запуск с HTTPS через django-sslserver
Установите пакет, добавьте его в INSTALLED_APPS и сгенерируйте самоподписанный сертификат (или используйте встроенный):
pip install django-sslserver
# settings.py:
INSTALLED_APPS = [
...
'sslserver',
]
# Запуск:
python manage.py runsslserver 0.0.0.0:8443
Starting development server at https://0.0.0.0:8443/ Using SSL certificate: sslserver/certs/development.crt [15:30:00] GET / 200 OK (0.002s)
Теперь сайт доступен по HTTPS на порту 8443.