Я создал проект Django для управления двумя отдельными сайтами, которые имеют некоторый внутренний код.Оба сайта находятся внутри отдельных приложений.Каждое приложение имеет свои собственные models.py, views.py, шаблоны и т. Д. *
Чтобы иметь возможность по-разному реагировать на разные имена хостов, я создал промежуточное ПО URLconf:
class HostnameBasedUrlconfMiddleware(object):
"""This middleware parses the hostname from the request, and selects the
urlconf accordingly.
To set a custom urlconf according to the current hostname, add an URLCONF
dictionary to your settings.py file.
URLCONF = {
'example.com': 'urls_example',
'example.dev': 'urls_dev',
'admin.example.dev': 'apps.admin.urls'
}
If the hostname is not found in the URLCONF dictionary, the default
ROOT_URLCONF setting will be used.
"""
def process_request(self, request):
# Decide which urlconf to use. Fallback is to use the ROOT_URLCONF
# as defined in the settings.py file.
try:
hostname = request.META['HTTP_HOST']
request.urlconf = settings.URLCONF[hostname]
except (KeyError, AttributeError):
pass
return None
Этосначала мне показалось, что он работает, но потом я осознал, что должно происходить какое-то кэширование.
При запуске сервера и запросе сайта A он будет отображаться.Если я запрашиваю сайт B, появляется сайт A.Иногда (но не всегда) после нескольких перезагрузок сайт B, наконец, появляется.После перезапуска сервера и запроса сайта B он будет отображаться, но теперь сайт A будет отображать содержимое сайта B.
Это произошло как со встроенным devserver, так и с gunicorn.
Я пыталсязапросить сайт с помощью curl, чтобы избежать кэширования в браузере, без разницы.
Я также подозревал, что это может быть своего рода коллизия имен шаблонов, но все шаблоны находятся внутри подпапки с уникальным именем в соответствующих папках шаблонов.
У меня не установлена memcached, и я не использую промежуточное программное обеспечение для кэширования.
В чем может быть проблема?Есть ли какое-то внутреннее автоматическое кэширование?