使用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->项目结构”页面的右侧,即“添加内容根”的选项,指定这一项目。

广告
将在 10 秒后关闭
bannerAds