Django多站点共享数据库

时间:2016-08-28 14:38:38

标签: python django

我即将为不同的房地产公司开发多个网站。所有人共享相同的html,部分等。区别在于内容,特别是属性......但其中一些属性可以在其他公司之间共享。

我正在考虑共享相同的数据库并使用url区分内容。通过这种方式,我只能为每个公司使用一个项目而不是一个项目。

有没有人对这类项目有建议?

谢谢,

1 个答案:

答案 0 :(得分:0)

我做到了。
这是个好主意吗?是的,就我而言。我必须重复使用相同的内容,当我们更改内容时,必须在所有页面上进行更改。在一个简单的站点上,三重部署和更改三个不同项目中的内容有点过分。但是它在一个简单的前端页面(甚至几乎不需要Django)中工作得很好,我不推荐它用于"真正的"网络应用。

会破坏什么?考虑一下您的网页将分享的内容,看看它是否存在问题。

1)我猜你是否想要在页面上拥有用户登录功能(除了管理员登录),那么这就是问题,如果我可以使用同一个用户不同的公司没有任何明显的联系。如果公司发现用户私人信息不像他们想象的那样私密,那么你可能遇到很多麻烦。对于那些真正不了解他们如何在他们从未访问过的页面上结束用户帐户的用户来说也是如此。

2)网址。如果没有额外的黑客攻击,你就无法为每家公司提供不同的服务。如果其中一家公司希望拥有/about/和另一个/company/页面,那么当公司要求下一页时,您就会开始攻击一个糟糕的解决方案

3)您可能希望在页面上连接到硬编码数据或数据库值的任何其他内容。即社会认证等。

你能做些什么?

如果我对解决第一个问题感到害怕,那么我会做什么:
- 覆盖用户模型并添加有关注册页面的信息 - 为每个页面创建用户模型的自定义管理器
- 编写一个中间件,只允许您使用特定于页面的管理器来处理当前请求 总而言之,我不会在一百万年内做到这一点。方式太hacky,太脆弱了。只需创建单独的数据库

要解决第二个问题,您可以创建一个多主机中间件,检查请求来自哪个域并返回正确的URL配置。类似于this。根据您的需要重写和修改并不是很难。

你无法为自己做出决定,但是在走向某种方式之前,我已经给你一些思考的东西了。祝你好运!