如何让Django根据HTTP请求中的“Host”标头找出要使用的Site对象?

考虑一个Django应用程序,使用标准的Django sitesframework为多个站点提供内容略有不同的内容.

传统的托管方式是配置多个Site对象并在多个Django项目中设置应用程序,每个项目在各自的settings.py中指向不同的SITE_ID.

出于各种原因,我希望避免为每个新站点创建新项目.我希望能够设置一个项目,让Django根据传入HTTP请求中引用的主机名找出要使用的Site对象.

推荐的实现此功能的方法是什么?

澄清:我希望站点框架忽略settings.SITE_ID(在settings.py中硬编码),而是根据Host头中的内容动态获取Site对象.为什么这个要求?我将每小时多次添加和删除网站,并且网站总数将超过10,000,因此不能为每个网站设置Django项目.这是Django中可解决的问题吗?如果是这样,实现它的最佳方法是什么?

最佳答案 建议的方法是不要尝试它,因为设置永远不会在运行时更改.而是在虚拟主机配置中设置一个变量,让WSGI适配器脚本或设置模块根据它选择其中一个站点.

点赞