Django 让用户添加自定义域

use*_*860 5 python django dns

我希望允许用户将他们的域映射到我的 Django 应用程序中的页面。因此,如果他们的页面位于: user.mydomain.com ,我希望他们能够将其域映射到 url,使其变为: usersdomain.com 。

我发现这个答案让我了解了如何设置子域:

如果您控制域的名称服务器并有权访问 RNDC 密钥,则可以使用注册后视图/信号将 cname 发送到您的 DNS 服务器,该服务器会将 username.yoursite.com 解析为 yoursite.com。确保 apache 设置为接收正确应用程序的通配符虚拟主机,然后使用自定义中间件读取 request.META['SERVER_NAME'].lsplit('.')[0] 以查看子域是什么。然后,您可以在视图中使用此信息来区分用户子域。

但我不知道如何让用户将他们的域指向我的子域。

met*_*mza 2

我的解决方法是,首先指导您的用户设置适当的 DNS 记录,将他们的域指向您的域(可能是 CNAME)。

然后,您需要将ALLOWED_HOSTS您的设置设置settings.py为受支持的通配符 (*)。需要注意的是,此配置会打开一个安全漏洞,因此您需要实现自己的主机验证,这是 Django在中间件级别推荐的

然后,您必须修改用于显示用户页面的任何技术。不匹配子域,而是匹配整个域。