Django报错Requested setting INSTALLED_APPS未配置问题求助
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting
INSTALLED_APPS, but settings are not configured. You must either
define the environment variable DJANGO_SETTINGS_MODULE or call
settings.configure() before accessing settings.
报错根本原因
你在settings.py文件还未完成配置加载的阶段,就提前导入了category.context_processors模块,对应代码如下:
from pathlib import Path # Build paths inside the project like this: BASE_DIR / 'subdir'. import category.context_processors # 错误触发点
导入category.context_processors时,该模块会自动引入内部定义的Category模型,而Django模型加载需要先读取INSTALLED_APPS等配置项,此时settings.py还没执行到INSTALLED_APPS的定义部分,配置未完成初始化,就会触发该报错。
解决方案
直接删除settings.py顶部的import category.context_processors这行代码即可。
你已经在TEMPLATES的context_processors配置项中,用字符串路径'category.context_processors.menu_links'完成了上下文处理器注册,Django会在配置加载完成后自动根据路径导入,完全不需要在settings顶部提前手动引入,这行多余的导入就是报错的直接诱因。
可选校验步骤
- 确认项目根目录下的
manage.py文件中,已经正确设置了DJANGO_SETTINGS_MODULE环境变量,默认生成的manage.py会包含os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'greatkart.settings')代码,缺失的话补充即可。 - 确认执行Django相关命令时使用
python manage.py xxx的格式,不要直接运行单独的py文件,直接运行py文件不会自动加载Django配置。
内容的提问来源于stack exchange,提问作者Samveg Bhansali

