【问题标题】:One Django app instance for multiple domains一个用于多个域的 Django 应用程序实例
【发布时间】:2020-02-05 18:53:34
【问题描述】:

我尝试创建一个 Django 应用程序,该应用程序适用于具有单个应用程序实例的多个域。

例如:

  • 共有三个域:group1.com、group2.com、group3.com
  • 每个域都有限制登录后可用的内容
  • user1 与 group1.comgroup2.com 相关联
  • user1登录group1.com并尝试进入group2.com时,他会自动登录group2.com
  • 有 URL,例如DOMAIN_NAME/posts/ 将显示从与该用户关联的所有域登录的用户的所有内容(在这种情况下,对于 user1 应该有所有“来自 group1.comgroup2.com 的帖子)
  • user1进入group3.com时,他没有登录

我使用 Django Site 框架将用户与域相关联 - 特定域中用户的内容限制工作正常。

此外,我在 settings.py 中使用 SESSION_COOKIE_DOMAIN 参数在域之间“共享”cookie,不幸的是,它仅适用于子域。比如设置后:

SESSION_COOKIE_DOMAIN = '.group.com'

在我编写了简单的中间件之后,我能够满足我上面写的要求,但仅限于子域,例如 'one.group.com'、'two.group .com'、'three.group.com'。

我一直在寻找处理该问题的解决方案,但我还没有找到最新 Django 3.x 框架的答案。

有什么方法可以像我解释的那样处理吗?

【问题讨论】:

标签: python django django-sites


【解决方案1】:

我想给你一个“django-hosts”包。

首先,您应该授予一些域的权限。

ALLOWED_HOSTS = [example1.com,example2.com,example3.com]

然后,你可以使用django-hosts

from django_hosts import patterns, host
host_patterns = patterns('path.to',
    host(r'api', 'api.urls', name='api'),
    host(r'beta', 'beta.urls', name='beta'),
)

您可以查看更多信息-> https://github.com/jazzband/django-hosts

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2011-09-09
    相关资源
    最近更新 更多