我看到了有关多站点和多主机 Django 的各种问题,包括子域和每个子域的特定架构。我还没有看到这个问题的解决方案(或提示,以便我可以编写一个解决方案)。
- 我在一个网站上使用 Django + PostgreSQL,比如说 myapp.com
- 主网站 myapp.com 用于公司注册
- 注册公司拥有自己的子域名company.myapp.com,并从那里登录并工作。
我的想法是在 PostgreSQL 中创建 2 个初始模式。
- 公司和用户的架构“auth”
- 架构“empty_company_template”,包含公司的基本表,全部为空,但已连接到正确的序列等。
当一家新公司注册时,我希望发生这种情况:
- 为公司创建一个源自empty_company_template的新架构
- 为公司创建一个新的数据库用户,名为company(公司名称)
- 将此新用户的搜索路径设置为公司、身份验证(无权访问empty_company_template,无权访问其他用户架构)
对我来说,这似乎比现有的解决方案更好,现有的解决方案似乎都依赖于单个数据库用户来完成整个应用程序(可以访问所有方案)。然而,我很难让它发挥作用。这确实是一个可行的方法吗?有人能指出我正确的方向吗?它是 Django,所以也许它已经完成了,只是我还没有找到它?
最佳答案
我有一个可行的解决方案,可以完成除单独用户之外的所有操作。
它是一小段中间件(只是 process_request),用于确定子域,并在数据库上执行 SET search_path 查询。目前对我来说已经足够了。
任何对代码感兴趣的人,请与我联系。当它最终确定时,我会在某个地方发布它。
2010 年 12 月 22 日编辑:
我在我的博客上发布了代码 http://blog.dyve.net/django-subdomains-and-postgresql-schemas
关于django - Django 上具有子域的多个 PostgreSQL 架构和用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4105329/