这个查询有我的帖子,但大部分都是针对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环境变量是Undefined。
需要帮助才能正确设置DJANGO_SETTINGS_MODULE。
答案 0 :(得分:6)
在Windows中设置DJANGO_SETTINGS_MODULE
的最简单方法是在命令提示符下使用set
命令。您还应该能够通过系统属性进行设置,但是您需要关闭并重新打开命令提示符才能使更改生效。
您也可以使用DJANGO_SETTINGS_MODULE
命令查询set
的当前值:
C:\temp\testproject> set DJANGO_SETTINGS_MODULE
此外,您需要将其设置为python模块名称not the filename(将其设置为文件名会产生类似于“无法导入设置”的错误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
management command。在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并且Django很聪明并使用它;如果你没有安装IPython,你的shell看起来会略有不同。)
如果您想使用Django 运行脚本,最简单的方法是write a custom management command,然后您可以使用manage.py
的参数运行。