【问题标题】:Django Sites framework - can I do these things?Django Sites 框架 - 我可以做这些事情吗?
【发布时间】:2017-02-09 05:02:32
【问题描述】:

我对 Sites 框架是什么有了大致的了解,但经过大量研究后,我无法确认 我正在 尝试实现的目标是否可行。

这就是我想要实现的目标(简化)。这些将是三个独立的站点 - 以及独立的 Django 项目。这可能吗?

网站/项目 1:Customers.ourdomain.com

  • 此站点管理有关我们客户的所有信息。
  • 会有一个名为 Contact 的模型存储有关客户的所有信息(姓名、地址、电子邮件等)
  • 拥有用于查看Contact 模型对象、编辑其详细信息等的视图

站点/项目 2:WorkOrders.ourdomain.com

  • 此站点将管理与工单有关的所有事情
  • 会有一个WorkOrder 模型,用于创建/编辑/管理工作订单以进行安装和服务等。
  • 为了为我们的客户创建工作订单,WorkOrder 模型需要从其他站点了解 Customer 模型。工作订单网站不需要编辑客户的数据 - 只需要对所有客户具有读取权限

站点/项目 3:Accounting.ourdomain.com

  • 会计网站,用于处理所有会计事项,如发票、应收账款、收入等。
  • 会有一堆与会计相关的模型,比如InvoicePayment等。
  • 会计站点需要知道和访问(只读)两个联系人站点(以了解向谁开具发票)和所有工单模型中的所有记录,以参考多少使用人工和材料来计算欠款。

因此会有三个单独的站点,每个站点都作为一个单独的 Django 应用程序,但是一些模型需要对其他站点可见。

这可能吗?


我们有一些特定的用例原理来分离这样的功能单元。我知道使用单独的应用程序这一切简单,但这对我们来说并不理想。

【问题讨论】:

  • 当然。只需使用相同的数据库。
  • 这似乎是一个简单的答案。但是迁移呢?迁移客户模型对工作订单有何影响?
  • 您可以使用可重复使用的应用程序来定义所有模型,并将其包含在每个站点中。如果它在 sys.path 中,您只需要 1 个副本,它应该包含它自己的所有迁移。
  • 这不是违背了拥有多个网站的目的吗?
  • 为什么要多个站点?

标签: django django-sites


【解决方案1】:

我目前正在做类似的事情。我们的 Django 项目包括 3 个应用程序。模型存储在相应的应用程序中,但在必要时在它们之间共享(导入)。

我们有三个由三个应用程序运行的实时站点。

___.something.com
___2.something.com
___3.something.com

我不知道如果您为三个站点设置三个项目,这将如何运作。您必须确保模型和迁移始终保持同步。这将变得非常不切实际。

这就是 Django 首先拥有应用程序的原因。因此,如果您需要扩展或扩展,您可以在同一个项目中进行。

【讨论】:

  • 对 - 我实际上有一个单独的项目,其设置与您描述的相同。两个独立的域,都在一个 Django 应用程序下,但具有不同的 settings.py 文件(具有共享库)。我只是想弄清楚应用程序级别之外的进一步分离是可能的。我在某处读到,官方 Django 文档中关于 sites 的示例实际上是两个独立的 Django 项目,而不仅仅是一个项目中的各种应用程序。这就是让我思考的原因。
【解决方案2】:

这是sites framework 的完美用例。绝对有可能做你所描述的。

好处是:

  1. 您将拥有一个可从所有三个域名访问的数据库。
  2. Django 可以根据子域定制呈现给用户的模板/数据。
  3. 您可以使用一台服务器完成这一切...只需在 NGINX 或 Apache 服务器上使用虚拟主机即可。

【讨论】:

  • 是的,我已经全部启动并运行了,而且运行良好。两个不同的领域,非常不同的体验/目的,一个数据库供他们使用。
猜你喜欢
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多