Основной платформой для развертывания Django является WSGI, это фактически стандарт для веб-серверов и приложений на Python.
Команда startproject установит простую конфигурацию по-умолчанию, которую вы можете впоследствии изменить под нужды вашего проекта и использовать с любым WSGI-совместимым веб-сервером. Django предоставляет следующую документацию касаемо веб-серверов:
Одна из ключевых концепций развертывания с WSGI заключается в указании объекта application, который веб-сервер использует для взаимодействия с вашим кодом.
Команда startproject создаст файл projectname/wsgi.py, необходимый для работы с веб-сервером.
Примечание
Вы обновили Django с предыдущего релиза и не обнаружили файла wsgi.py в проекте? Можете самостоятельно добавить его в корень проекта (рядом с settings.py и urls.py), с содержанием, данным ниже. Если вы хотите, чтобы WSGI мог работать с командой runserver, добавьте в настройки WSGI_APPLICATION = "mysite.wsgi.application" (заменив mysite на имя вашего проекта).
Изначально этот файл содержит:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
# This application object is used by the development server
# as well as any WSGI server configured to use this file.
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Строка os.environ.setdefault содержит список настроек используемых модулей, на случай если вы еще не задали явно переменную DJANGO_SETTINGS_MODULE. Вам нужно будет изменить эту строку, заменив mysite на имя вашего проекта, чтобы путь к настройкам вашего проекта был правильным.
Чтобы использовать WSGI middleware можно просто обернуть объект приложения в том же файле:
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)
Также вы можете заменить WSGI-приложение, предоставляемое с Django, если хотите совместить приложения Django с приложениями другого фреймворка.
Примечание
Некоторые сторонние WSGI middleware не вызывают метод close объекта ответа после обработки запроса — самым извесным является middleware Sentry(до 2.0.7 версии) для обработки ошибок. В таких случаях сигнал request_finished не отсылается. Это может привести к простою подключений к базе данных или серверам memcache.
Mar 30, 2016