I'm upgrading to django 3.2 but as per it's release notes, it says:
The SECRET_KEY setting is now checked for a valid value upon first access, rather than when settings are first loaded. This enables running management commands that do not rely on the SECRET_KEY without needing to provide a value. As a consequence of this, calling configure() without providing a valid SECRET_KEY, and then going on to access settings.SECRET_KEY will now raise an ImproperlyConfigured exception.
Error: django.core.exceptions.ImproperlyConfigured: Cannot import 'users'. Check that 'apps.users.apps.UsersConfig.name' is correct.
Users apps.py:
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
I think that error is because of such as it was working with django==3.1.7. Can someone help me to solve this? How can i check if my secret key is valid or not and also generate new if needed?
I am having this issue suddenly with Django 3.2. Why now I am not exactly sure, but adding this to my settings.py file fixed it for me. I need to understand the structural issue causing this. It might be because our Django project contains many apps grouped together.
from django.apps import AppConfig
AppConfig.default = False
https://docs.djangoproject.com/en/3.2/ref/applications/#django.apps.AppConfig.default
You can also set this individually on at an app level. This may be a better solution. I am still missing the reasoning for why this is necessary.
from django.apps import AppConfig
class DashboardConfig(AppConfig):
name = 'dashboard'
default = False
I don't think your error is directly related to that SECRET_KEY change in your question.
AppConfig.name should be the full Python path to the application. Since you appear to have users inside an apps module, you should use 'apps.users' instead of 'users'
class UsersConfig(AppConfig):
name = 'apps.users'
The solution for me was to simply delete the apps.py file entirely - Django now managed to find the app automatically.
If your django applications are in a folder like (app, apps, applications, etc..), you have to specify the absolute path in your app_name/apps.py file to the name attribute, see the image below.
On this image my users (1) app is in the app folder that's why a have to use app.users (3), (4).