Как заставить Django выяснить, какой объект Site использовать на основе заголовка «Host» в HTTP-запросе? - PullRequest
4 голосов
/ 11 июля 2011

Рассмотрим приложение Django, созданное для обслуживания нескольких сайтов со слегка отличающимся контентом, используя стандартную среду Django sites.

Традиционный способ разместить это - настроить несколько объектов Site и настроить приложение.в нескольких проектах Django каждый проект указывает на разные SITE_ID в соответствующих settings.py: s.

. По разным причинам я бы хотел избежать создания нового проекта для каждого нового сайта.Я хочу иметь возможность настроить один проект и заставить Джанго выяснить, какой Site объект использовать, основываясь на имени хоста, указанном во входящем HTTP-запросе.

Каков рекомендуемый способ достижения этой функциональности?

Разъяснение : я хочу, чтобы инфраструктура сайта игнорировала settings.SITE_ID (жестко заданный в settings.py) и вместо этого динамически извлекала объекты сайта на основе содержимого заголовка Host.Почему это требование?Я буду добавлять и удалять сайты несколько раз в час, и общее количество сайтов будет превышать 10 000, поэтому настройка проекта Django для каждого сайта не является вариантом.Это проблема, которая разрешима в Django?Если да, то как лучше всего этого добиться?

1 Ответ

2 голосов
/ 11 июля 2011

Рекомендуется не пытаться делать это вообще, так как настройки никогда не должны изменяться во время выполнения. Вместо этого установите переменную в конфигурации вашего виртуального хоста и попросите скрипт адаптера WSGI или модуль settings выбрать один из сайтов на основе этого.

...