Команда запуска сервера разработки Django: manage.py runserver

Раздел: Разработка на Python -> Веб-разработка

Запуск сервера разработки Django: manage.py runserver

Основной и наиболее распространённый способ запуска встроенного сервера разработки Django - выполнить команду python manage.py runserver в корне проекта, где находится файл manage.py. По умолчанию сервер запускается на локальном адресе 127.0.0.1:8000, доступен только с той же машины и автоматически перезагружается при изменениях в коде (кроме добавления новых файлов). Этот вариант подходит для ежедневной разработки, когда не требуется доступ извне или нестандартные настройки.

cd myproject
python manage.py runserver

Backend 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 9090

Html 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:8000

Python 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.

Запуск сервера разработки Django через manage.py runserver - comments

En
Python manage py runserver (python)