Настройка текущего сайта в django - nginx
Вопрос в том, каков наилучший способ изначально установить или динамически изменить current_site в структуре сайтов django?
Этот вопрос похож на вопрос " Динамически установить идентификатор сайта", который был задан в 2014 году.
У меня есть два разных домена, один из которых содержит "стих".
Из того, что я прочитал, рекомендуемый подход - прочитать некоторую переменную окружения в settings.py и установить соответствующий идентификатор.
Однако socket.gethostname() не будет работать, поскольку nginx указывает оба домена на один и тот же хост. Кроме того, nginx будет нелегко установить читаемую переменную, хотя есть два файла конфигурации. Наконец, вы не можете прочитать URL в settings.py, потому что не можете получить доступ к запросу. и т.п.
Вместо этого, основываясь на связанном выше вопросе, я добавил следующее промежуточное ПО:
class SiteMiddleware(MiddlewareMixin):
def process_request(self, request):
if 'verse' in request.build_absolute_uri():
settings.SITE_ID = 2
current_site = Site.objects.get(domain__icontains='verse')
else:
settings.SITE_ID = 1
current_site = Site.objects.get(id=1)
request.current_site = current_site
return None
Который работает, но требует отключения существующих
django.contrib.sites.middleware.CurrentSiteMiddleware
Похоже, что CurrentSiteMiddleware нужен установленный site_id для запроса сайта в первую очередь.
Итак, безопасен ли этот способ и, что более важно, существует ли более простой способ сделать это?