2

我尝试创建一个 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 框架的答案。

有没有办法像我解释的那样处理?

4

1 回答 1

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

于 2020-02-05T19:02:17.570 回答