Команда запуска сервера разработки 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

Django разработка веб приложений на python (разработка веб-приложений на django)

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.

Fast api python (fastapi для 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

веб библиотека python (веб-библиотека python (фреймворк))

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)