首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理django应用程序中的重复内容

处理django应用程序中的重复内容
EN

Stack Overflow用户
提问于 2022-07-21 12:52:53
回答 2查看 42关注 0票数 0

我目前正在Django中构建一个工具,用于管理工程部门内的设计信息。这样做的目的是为所有项目提供一个共同的项目目录。然而,这些项目将根据用户组加以限制。对于每个项目,您可以从目录中导入项目并在项目中更改它们。要求每个项目必须链接到不同的数据库。

我不太清楚如何处理这个问题。据我所读,我想出的解决方案是有多个django应用程序。一个是项目的通用目录(链接到自己的数据库),然后是每个项目的应用程序(它可以从自己的数据库中读写,但也可以从公共项目目录数据库中读取)。通过这种方式,我可以限制用户可以访问什么数据库/项目。然而,这个解决方案的问题是它不是干的。所有项目看起来都一样:相同的模型、相同的表单、相同的模板。它们只是链接到不同的数据库,我不知道如何聪明地做到这一点(没有复制粘贴整个文件,因为我认为管理这些文件会很痛苦)。

我认为,在执行查询时(使用using属性)时,可以通过更改数据库标签来避免这种情况,这取决于经过身份验证的用户的组。这样做的问题是用户可以访问多个项目。所以,我又一次不知所措。

EN

回答 2

Stack Overflow用户

发布于 2022-07-21 13:17:25

它期待我,你所需要的是一个单一的应用程序,将适当地管理它的访问。

如果要求有单独的DBs,我不会争辩,但是.在1db中,分离的表总是很小的可能会被接受。

票数 0
EN

Stack Overflow用户

发布于 2022-07-21 13:21:16

Django应用程序不隔离对象,它们是构造代码库的一种方式。这个想法是,应用程序可以在其他项目中重复使用。有一个单独的应用程序为您的项目目录和您的项目是一个好主意,但让他们在一起不是一个问题,如果你有一个小的代码库。

如果我正确理解你的职位,你想要的是不同部门的数据库是分开的。这本质上是一个多租户问题,这本身就是一个大问题,有几种选择:

  1. Code分离-所有的项目/部门都存在于一个数据库和模式中,但是通过代码分离,这些代码根据最终用户是谁(字面意思是使用.filters())过滤部门。这很容易做到,但如果您的代码出错,数据可能会泄露给错误的用户。我会推荐这个作为用例.

  1. Schema分离-您仍然在使用单个数据库,但是每个部门都有自己的模式。为此您需要使用Postgresql,但是一旦设置了模式,数据对错误用户可见的可能性就小得多。有一些Django库,比如django-tenants,可以做很多繁重的工作。

  1. Database分离-每个部门都有自己的数据库。数据被泄露的可能性甚至更小,但是你必须管理多个数据库,而且更难以扩展。您可以通过django来管理它,因为有对multi-databases.

的支持

  1. Application分离-每个部门不仅有自己的数据库,还拥有自己的应用程序实例。这种分离是绝对的,但是您仍然需要在像Heroku这样的主机上管理多个应用程序,这样的应用程序的可伸缩性更差。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73066581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档