正确设置Windows上的DJANGO_SETTINGS_MODULE

nav*_*yad 3 windows django environment-variables

这个查询有我的帖子,但大部分都是针对linux的.他们都没有明显的窗户

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

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

在发现我必须设置DJANGO_SETTINGS_MODULE环境以便Django可以了解数据库设置之后.所以我把它设置得像

DJANGO_SETTINGS_MODULE = "D:\Django_Code\mysite\mysite\settings.py"
Run Code Online (Sandbox Code Playgroud)

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

>>> from django.db import connection
>>> cursor = connection.cursor()
Run Code Online (Sandbox Code Playgroud)

它说DJANGO_SETTINGS_MODULE环境变量是Undefined.

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

Cas*_*par 6

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

您也可以查询DJANGO_SETTINGS_MODULE使用该set命令的当前值:

C:\temp\testproject> set DJANGO_SETTINGS_MODULE
Run Code Online (Sandbox Code Playgroud)

此外,您需要将其设置为python模块名称,而不是文件名(将其设置为文件名会给您一个类似于" 无法导入设置'C:\ temp\testproject\settings.py'的错误(是吗?在sys.path?):不支持按文件名导入. ")

例如,

C:\temp\testproject> set DJANGO_SETTINGS_MODULE=testproject.settings
Run Code Online (Sandbox Code Playgroud)

然后你可以运行python并导入模块.

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

请注意,我们还明确地添加了包含django项目(testproject在本例中)sys.path的目录,这实际上是Python查找模块的目录列表.这是必要的,因为Python将设置文件导入为python模块,而不是文件(如前所述).

如果您希望交互式shell与Django对象一起使用,则可以使用shell管理命令.在Django项目目录中,运行以下命令:

manage.py shell
Run Code Online (Sandbox Code Playgroud)

既然你在窗户上,你可能不得不这样做

python manage.py shell
Run Code Online (Sandbox Code Playgroud)

相反,因为我个人有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>
Run Code Online (Sandbox Code Playgroud)

(注意我已经安装了IPython并且Django很聪明并使用它;如果你没有安装IPython,你的shell看起来会略有不同.)

如果要使用Django运行脚本,最简单的方法是编写自定义管理命令,然后可以使用参数运行该命令manage.py.

  • @ExoticBirdsMerchant当然,您可以设置它[在Windows上设置其他环境变量的方式](http://support.microsoft.com/kb/310519)(该文章适用于XP,但它在7上仍然相同).顺便说一句,那个UI很糟糕,如果你需要在Windows上编辑一些环境变量,那么你可能想尝试[Rapid EE](http://www.rapidee.com/)(没有联盟). (2认同)