DJANGO_SETTINGS_MODULE未导入我的模型类
我在很多帖子中看到,可以使用 DJANGO_SETTINGS_MODULE = APPNAME.settings 来导入模型类,以便在 Linux 命令行上运行 Python 脚本。我尝试运行了:
DJANGO_SETTINGS_MODULE=dishtank.settings PYTHONPATH=$HOME/pythonDirLocation python pythonScript.py
在我的 Python 脚本中,我需要从我某个应用的 model.py 文件中导入一些类,这样我才能编辑数据库中的表格。我在导入所有 Django 设置以便与我的脚本一起运行时,有什么我遗漏的地方吗?
2 个回答
8
从1.4版本开始,setup_environ
这个方法就不再推荐使用了,所以现在有了新的解决办法,大家可以参考一下官方文档的指导。
简单来说,你需要把代码调整成下面的样子:
#!/usr/bin/python
# Deprecated way:
# from django.core.management import setup_environ
# import settings
# setup_environ(settings)
import sys
import os
# If you find a solution that does not need the two paths, please comment!
sys.path.append('$path_to_root_of_project$')
sys.path.append('$path_to_root_of_project$/$project_name$')
os.environ['DJANGO_SETTINGS_MODULE'] = '$project_name$.settings'
from django.conf import settings
# Beginning of your script...
需要注意的是,如果合适的话,可能更好的解决办法是把这个脚本整合到一个自定义管理命令里,比如说可以用./manage.py my_command
来运行。
1
这里提到的 DJANGO_SETTINGS_MODULE = APPNAME.settings
应该改成 PROJECT.settings
。我通常不喜欢这种写法,更喜欢在我的独立脚本的开头使用 setup_environ
。
from django.core.management import setup_environ
from yourproject import settings
setup_environ(settings)
from yourproject.app.models import YourModel