【Django】either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure()

解决方案:在终端执行

export DJANGO_SETTINGS_MODULE=your_project_name.settings

注:当您通过 export 命令设置环境变量时,这些环境变量只在当前会话中有效。一旦您关闭终端窗口或重新启动计算机,这些环境变量将被丢失,您需要重新设置它们。

===============

事由:django 通过浏览器网页请求访问,一切正常。但直接在pycharm的终端窗口运行却报错。提示:

raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

报错代码如下:


from django.http import HttpResponse
from django.db import connection

def test():
    with connection.cursor() as cursor:
        query = "SELECT id FROM mytable LIMIT 10"
        cursor.execute(query)
        id_list = cursor.fetchall()
        id_list2 = [item[0] for item in id_list]
        return id_list2

def doTest(request):
    return HttpResponse(test())

if __name__ == "__main__":
    print(test())

通过浏览器访问doTest()对应的url,输出正常。 直接在pycharm中执行 print(test()) 进行测试。则报错。

原因:

 django.db.connection 是环境配置的其中一部分。

PyCharm的终端窗口环境默认情况下并未导入mysite.settings,所以报错。

在浏览器中访问Django视图时,Django会自动处理这些配置,所以正常。

解决方案的具体操作:

1、打开终端,并切换到项目根目录(manage.py 文件所在目录)

2、终端中执行以下命令:export DJANGO_SETTINGS_MODULE=your_project_name.settings

windows操作系统用:set DJANGO_SETTINGS_MODULE=mysite.settings

解释:

export 是一个Unix和类Unix操作系统中用于设置环境变量的命令。export 命令允许您为特定的环境变量分配值,以便它们在当前会话中可用。

当您通过 export 命令设置环境变量时,这些环境变量只在当前会话中有效。一旦您关闭终端窗口或重新启动计算机,这些环境变量将被丢失,您需要重新设置它们。

如果您希望在每次启动计算机时都自动设置特定的环境变量,(windows系统)您可以使用系统属性中的环境变量设置或者在启动脚本中设置环境变量。

还不能解决,可以直接在pycharm的界面中进行配置(可以对每个.py文件单独配置环境变量)

 

=====================

又或者:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值