gpt4 book ai didi

django - 多个 Django 应用程序应如何相互通信?

转载 作者:行者123 更新时间:2023-12-02 05:24:44 25 4
gpt4 key购买 nike

其他发帖者之前曾在本论坛中说过,当您的 Django 应用程序开始变得庞大且难以管理时,您应该将其拆分为多个应用程序。我现在正处于那个阶段。允许这些应用程序之间进行通信的最佳实践是什么?

我的一个应用程序(我们称之为处理器)可以处理非常大的数据集。它每小时一次为其他应用程序生成少量新数据。这个其他应用程序(我们称之为 Presenter)向用户显示数据。

Processor应该如何将新数据交给Presenter?它是否应该简单地导入 Presenter 模型的部分内容,以便可以在 Presenter 的数据库中创建和保存记录?这对我来说似乎是紧密耦合的。还是应该通过调用Presenter中的函数来传递数据?或者将数据放入 Processor 和 Presenter 都知道的某种数据存储中?

大家一般都是怎么解决这个问题的?

/马丁

最佳答案

我肯定会选择在 Presenter 应用程序中导入处理器的模型。例如,您可以通过这种方式添加额外的用户信息:您有一个 UserPreferences 模型,其中 ForeignKeyFielddjango.contrib.auth.models.User.在两个应用程序之间这样做可能不会有什么不好的感觉,因为 django.contrib 是“标准库”,但尽管如此,它是直接耦合。

如果您的应用程序是耦合的,那么您的代码应该耦合以反射(reflect)这一点。这遵循显式优于隐式的想法,对吗?

但是,如果您正在设计一些更通用的东西(即您要为不同类型的处理器使用多个 Presenter 应用实例),您可以将特定模型存储为设置:

import processor_x.models
PRESENTER_PROCESSOR_MODELS = presenter_x.models

然后,在您的 Presenter 模型中:

from django.conf import settings
class Presenter:
processor = models.ForeignKey(settings.PRESENTER_PROCESSOR_MODELS)

警告:我从未尝试过这样做,但我不记得设置仅限于字符串、元组或列表!

关于django - 多个 Django 应用程序应如何相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com