Django Session Middleware, вызывающие исключения
Я не могу понять, что здесь происходит. У меня есть сессия, которая сохраняется, когда пользователь обращается к url типа: website.com/client, где client - это клиент, использующий систему. Это хранится в сессии с помощью django.contrib.sessions
Вот моя декларация промежуточного ПО:
MIDDLEWARE = [
'debug_toolbar.middleware.DebugToolbarMiddleware',
# must be before session middleware
'utils.middleware.routers.ClientDatabaseRouterMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
# custom middleware
# 'utils.middleware.CookieMiddleware.CookieMiddleware',
# 'utils.middleware.ExtendSession.ExtendSessionMiddleware',
'utils.middleware.UniversalDataMiddleware.UniversalDataMiddleware',
'apps.fort.middleware.LoginRequiredMiddleware',
'utils.middleware.TimezonesMiddleware.TimezonesMiddleware',
'utils.middleware.SessionMiddleware.SessionMiddleware', # maybe rewrite this?
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 'simple_history.middleware.HistoryRequestMiddleware', # auto adds user who makes change
# 'utils.middleware.Profilers.ProfileMiddleware',
# anything under this is excluded when decorator @property_not_important is called
'utils.middleware.CheckPropertyMiddleware.ExcludePropertyMiddleware',
# allow exclusion
'utils.middleware.CheckPropertyMiddleware.CheckPropertyMiddleware',
# 'utils.middleware.ExcludeMiddleware.ExcludeMiddleware',
]
Он также находится в INSTALLED_APPS.
Моя проблема в том, что когда я делаю git client url
django сохраняет сессию, но когда я возвращаюсь на основной сайт, поиск сессии вызывает 500 ошибку, потому что сессии хранятся в каждой клиентской БД... как я могу это исправить?
Если я вручную удаляю сессию sessionid
, созданную django в браузере, мой сайт загружается без 500, поэтому я не уверен, как ее удалить.
Проблема, как я уже говорил, заключалась в том, что моя таблица django_sessions
хранилась в другой БД, чем моя БД по умолчанию, поскольку я основываюсь на client_url
, чтобы определить, какая версия системы используется (т.е. для какого клиента).
Чтобы исправить это, мне пришлось немного изменить промежуточное ПО сессии, предоставляемое Django: django.contrib.sessions.middleware.SessionMiddleware
чтобы я мог проверять запрос на наличие переменной client_url
, потому что это был единственный способ, которым я получал сохранение или обновление сессии.
Вот измененный код, который я использовал вместо: django.contrib.sessions.middleware.SessionMiddleware