Django Sessions, использующие cached_db и redis, не получают и не сохраняют данные сессии
Зависимости
Django==3.2.6
redis>=3.5.3,<3.6.0
django-redis>=4.12.1,<4.13.0
Настройки
SESSION_COOKIE_SAMESITE = None
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://:12345678@redis:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"corsheaders.middleware.CorsMiddleware",
]
Тестовое представление API
@api_view(["GET"])
def test(request):
print(request.session.__dict__)
if not request.session.session_key:
request.session.save()
if not "user_id" in request.session:
request.session["user_id"] = "test"
request.session.modified = True
print(request.session.__dict__)
return Response({"hello"})
Как вы можете видеть, я запустил сессию для принудительного сохранения, а также изменил значение modified на True
При каждом запросе к этому API ни одна из данных сессии не сохраняется. Ключ_сессии также всегда не сохраняется. Кто-нибудь знает, почему так происходит?