2

我希望能够编写可以在一次性批处理脚本中访问的共享函数,也可以通过正在运行的 Django 服务访问(使用 ORM)

目前,我在 my_proj 模块下的 _init__.py 中有这个。

if 'DJANGO_SETTINGS_MODULE' not in os.environ:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'my_proj.blah.blah.settings'
    import django
    django.setup()

这适用于一个 django 项目。但是,现在我想从另一个 django 项目中引用 ORM 函数,“other_proj”在同一个 repo 中来自一个独立脚本,该脚本位于两个 django 项目之外

有没有办法一次“django.setup()”多个项目?

或者,至少,一种在两个项目之间轻松切换设置的方法?

还是有更好的方法?(我意识到我可以创建一个客户端库来在服务运行时访问服务,但更愿意消除这种开销)

4

2 回答 2

1

如果您希望 Django 项目访问驻留在不同 Django 项目中的功能,则可以选择客户端库(如您所述)。您还可以考虑将这些功能集打包为可重用的Django 应用程序,然后导入到每个项目中,或者您可以将它们进一步抽象为可重用的 Python 模块,然后导入到每个项目中。如果您希望使用来自一个项目的 Django ORM 来访问来自不同项目的数据,那么您可能正在寻找这个 SO 问题:如何使两个 django 项目共享同一个数据库

我认为在您的问题中有更多细节(例如,您希望可以从项目 B 调用的项目 A 中的函数 X),我们可能会在指导下更加具体。

于 2019-10-09T19:19:36.067 回答
0

我不确定我是否完全理解您在这里尝试实施的情况;听起来可能有点像您要求的两件事是:

1) 在uWSGI 下以 Emperor 模式运行 Django 项目允许您同时从一台服务器服务多个 Django 项目。

2) 可以将 Django 配置为使用Sites 框架同时在多个域下运行同一个项目。

不过,我同意,关于您拥有什么以及您试图用它完成什么的更多细节可能是提供令人满意的答案的必要条件。

于 2019-10-09T19:36:39.743 回答