如何定义环境变量DJANGO_SETTINGS_MODULE?解决smart-selects配置错误
如何定义环境变量DJANGO_SETTINGS_MODULE?
场景说明
我在使用ChainedForeignKey(来自django-smart-selects)时遇到了如下错误:
django.core.exceptions.ImproperlyConfigured: Requested setting USE_DJANGO_JQUERY, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
相关模型代码如下:
from django.db import models from smart_selects.db_fields import ChainedForeignKey # Create your models here. class City(models.Model): name = models.CharField(max_length=25, null=True) class Area(models.Model): name = models.CharField(max_length=25, null=True) city = models.ForeignKey(City, on_delete=models.CASCADE) class Store(models.Model): store = models.CharField(max_length=50) city = models.ForeignKey(City, on_delete=models.CASCADE) area = ChainedForeignKey(Area, chained_field="city", chained_model_field="city")
解决方法
一、通过环境变量设置DJANGO_SETTINGS_MODULE
1. 临时设置(仅当前终端会话有效)
- Linux/macOS(bash/zsh)
export DJANGO_SETTINGS_MODULE=你的项目名称.settings - Windows(命令提示符)
set DJANGO_SETTINGS_MODULE=你的项目名称.settings - Windows(PowerShell)
$env:DJANGO_SETTINGS_MODULE="你的项目名称.settings"
2. 永久设置
Linux/macOS
编辑你的shell配置文件(如~/.bashrc、~/.zshrc),添加以下内容:export DJANGO_SETTINGS_MODULE=你的项目名称.settings保存后执行
source ~/.bashrc(或对应配置文件)使更改立即生效。Windows
- 右键「此电脑」→ 「属性」→ 「高级系统设置」
- 点击「环境变量」
- 在「用户变量」或「系统变量」区域点击「新建」
- 变量名填写
DJANGO_SETTINGS_MODULE,变量值填写你的项目名称.settings - 确认所有窗口后,重启终端或应用程序
二、在代码中直接配置settings
如果不想依赖环境变量,可以在代码开头手动配置Django settings:
from django.conf import settings if not settings.configured: settings.configure( DEBUG=True, SECRET_KEY='your-secret-key-here', INSTALLED_APPS=[ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', # 必须添加smart_selects到INSTALLED_APPS 'smart_selects', # 你的其他应用 'your_app_name', ], DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'db.sqlite3', } }, # 根据smart_selects需求设置USE_DJANGO_JQUERY USE_DJANGO_JQUERY=True )
额外注意
确保你的项目名称.settings是真实存在的配置文件,并且已经将smart_selects添加到该文件的INSTALLED_APPS列表中。
内容的提问来源于stack exchange,提问作者Anurag Jain
相关产品推荐
相关产品推荐

