Неправильно сконфигурировано: Запрошена настройка 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
        )
    )
})
Вернуться на верх