在 Windows 上正确设置 DJANGO_SETTINGS_MODULE

2024-02-11

我有关于这个查询的帖子,但大多数都是针对 Linux 的。没有一个明确适用于 Windows

在我的应用程序中,我正在设置数据库(sqlite3,Django 中的默认值)。编辑我的应用程序(mysite)的setting.py文件后

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'D:/Django_Code/sqlite.db',                      # Or path to database file if using sqlite3.
        'USER': '',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

发现我必须设置 DJANGO_SETTINGS_MODULE 环境以便 Django 可以了解数据库设置。所以我把它设置为

DJANGO_SETTINGS_MODULE = "D:\Django_Code\mysite\mysite\settings.py"

当我发布时交叉检查数据库设置

>>> from django.db import connection
>>> cursor = connection.cursor()

它说 DJANGO_SETTINGS_MODULE 环境变量未定义。

需要帮助才能正确设置 DJANGO_SETTINGS_MODULE。


最简单的设置方法DJANGO_SETTINGS_MODULE在 Windows 中使用的是set http://www.computerhope.com/sethlp.htm命令提示符下的命令。您还应该能够通过系统属性进行设置,但是您需要关闭并重新打开命令提示符才能使更改生效。

可以查询当前值DJANGO_SETTINGS_MODULE使用set命令以及:

C:\temp\testproject> set DJANGO_SETTINGS_MODULE

另外,你需要将其设置为python模块名称,不是文件名 https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings(将其设置为文件名会给你一个类似于“无法导入设置“C:\temp\testproject\settings.py”(是否在 sys.path 上?):不支持按文件名导入。")

例如,

C:\temp\testproject> set DJANGO_SETTINGS_MODULE=testproject.settings

然后就可以运行python并导入模块了。

>>> import sys
>>> sys.path += ['C:\\temp']
>>> from django.db import connection
>>> connection.cursor()
<django.db.backends.util.CursorDebugWrapper object at 0x02C7F0B0>

请注意,我们还显式添加了包含 django 项目的目录(testproject在这种情况下)到sys.path,它实际上是 Python 查找模块的目录列表。这是必要的,因为 Python 将设置文件作为 python 模块而不是文件导入(如前所述)。

如果您想要一个交互式 shell 来处理 Django 对象,您可以使用shell管理命令 https://docs.djangoproject.com/en/dev/ref/django-admin/#shell。在 Django 项目目录中,运行以下命令:

manage.py shell

由于您使用的是 Windows,因此您可能需要这样做

python manage.py shell

相反,因为我个人遇到了 python 脚本无法接收命令行参数的问题。

C:\temp\testproject> python manage.py shell

In [1]: from django.db import connection

In [2]: connection.cursor()
Out[2]: <django.db.backends.util.CursorDebugWrapper at 0x33a0bd0>

(请注意,我有IPython http://ipython.org/安装了并且 Django 很聪明并使用它;如果您没有安装 IPython,您的 shell 看起来会略有不同。)

如果你想用 Django 运行脚本,最简单的方法是编写自定义管理命令 https://docs.djangoproject.com/en/dev/howto/custom-management-commands/,然后您可以使用参数来运行它manage.py.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上正确设置 DJANGO_SETTINGS_MODULE 的相关文章

随机推荐