关于 django 中模块导入的一点疑问

2021-03-26 19:20:15 +08:00
 yezheyu

场景是:在 test.py 这个独立的测试脚本中要使用 django 项目的模型类。

我看别人博客使用这种方式导入的:

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blog.settings') import django django.setup() import blog.models

test.py 脚本中直接导入项目的模型类,因为 models 不在 test.py 的工作目录下,不应该是设置环境变量 PYTHONPATH,把 models 模块路径添加到 sys.path 搜索路径下吗?

那上面设置 DJANGO_SETTINGS_MODULE 环境变量,然后 django.setup() 有什么用? 是使用 django 从 DJANGO_SETTINGS_MODULE 环境变量中加载配置启动 app,内部把所有用到模块加载到内存,因此就可以直接使用 blog.models 导入是吗?本质是使用 test.py 文件替代了 manage.py 文件作为项目的入口启动文件是吗?

那为什么使用 celery 时只设置环境变量不用 django.setup()?

1428 次点击
所在节点    Python
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/765517

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX