使用Django从本地的Python脚本调用
在尝试了一些在网上流传的信息后,遇到了一些困难,所以做了以下记录。
经过Django1.10和python3.6.0的测试,验证通过。
import sys
import os
import django
sys.path.append('/Path/to/your/project')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'rootdir.settings') # 自分のsettings.py
def call():
django.setup()
from yourapp.models import YourModel
objects = YourModel.objects.all()
for obj in objects:
print(obj)
if __name__ == '__main__':
call()
如果不在from yourapp.models import YourModel之前执行,会出现错误。
django核心异常:应用尚未加载。
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘rootdir.settings’)
→我记得在相关设置中说过这样的话,但具体细节我忘记了。
django.core.exceptions.ImproperlyConfigured: 请求了设置LOGGING_CONFIG,但配置未完成。您必须在访问设置之前,要么定义环境变量DJANGO_SETTINGS_MODULE,要么调用settings.configure()。
将以下内容以中文进行本地化释义,仅需给出一种选项:
– “I like to travel and explore different cultures.”
我喜欢旅行并探索不同的文化。
django.core.exceptions.ImproperlyConfigured: 请求的设置 DEFAULT_INDEX_TABLESPACE,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
由于Pycharm不会查看sys.path.append的内容,所以您需要在“首选项->项目:yourproject->项目结构”页面的右侧,即“添加内容根”的选项,指定这一项目。