Неправильно сконфигурировано: Запрошена настройка INSTALLED_APPS, но настройки не настроены. Heroku
Я пытаюсь установить свой проект Django на Heroku. Я делаю это впервые.
При развертывании все проходит успешно, но при открытии представления я получаю следующее сообщение: ImproperlyConfigured: Запрошена настройка INSTALLED_APPS, но настройки не настроены. (полный отслеживание ниже).
Я использую дополнения Heroku Postgres и Heroku Redis.
Что я делаю не так?
Procfile
release: python manage.py migrate
web: daphne test_cs.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker channels --settings=test_cs.settings -v2
runtime.txt
python-3.10.2
asgi.py
import os
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import main.routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_cs.settings')
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": AuthMiddlewareStack(
URLRouter(
main.routing.websocket_urlpatterns
)
)
})
Предполагаю, что setdefault() переопределяется где-то еще. Попробуйте os.environ['DJANGO_SETTINGS_MODULE'] = test_cs.settings
Мне удалось решить проблему, изменив положение os.environ.setdefault перед импортом. Видимо, порядок имеет значение. Я нашел решение здесь
updated asgi.py
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_cs.settings')
django.setup()
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application
import main.routing
django_asgi_app = get_asgi_application()
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AuthMiddlewareStack(
URLRouter(
main.routing.websocket_urlpatterns
)
)
})