4

sites考虑一个 Django 应用程序,它使用标准 Django框架为多个站点提供服务,内容略有不同。

托管它的传统方法是配置多个对象并在多个 Django 项目中设置应用程序,每个项目在各自的:s中Site指向不同的项目。SITE_IDsettings.py

由于各种原因,我想避免为每个新站点创建一个新项目。我希望能够设置一个项目并让 DjangoSite根据传入的 HTTP 请求中引用的主机名确定要使用哪个对象。

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

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

4

1 回答 1

2

推荐的方法是根本不要尝试,因为设置永远不应该在运行时改变。相反,在您的虚拟主机配置中设置一个变量,并让 WSGI 适配器脚本或settings模块根据该变量选择一个站点。

于 2011-07-10T21:55:28.743 回答