为什么会话没有保留在我的 Django 应用程序中?

Why are sessions not being persisted in my Django app?

我在 Heroku 的临时服务器上有一个 Django (1.11.8) 应用程序 运行。

我导入了包含现有记录、用户等的数据库,一切似乎都运行良好。

当我登录时,有时会返回到登录页面。其他时候,我登录后会被重定向到用户个人资料页面。但是,如果在那之后我做了任何事情,我最终会被注销。

我尝试确保 cookie 的名称不会与生产应用程序冲突(工作正常)。

我还通过 shell 检查了会话记录。当我设法登录时,它看起来不像是在创建任何新的会话记录。为确保我清除了所有会话记录,并且在我登录时没有创建新记录。

数据库连接似乎正常,因为我可以通过注册创建用户记录。我还能够通过 shell 手动创建会话记录。我只是没有看到任何因登录页面而创建的内容。

有什么想法吗?

编辑:

所以在我使用的已安装应用程序中:

'django.contrib.admin', 'django.contrib.auth', 'django.contrib.sessions'

引擎:

SESSION_ENGINE = "django.contrib.sessions.backends.cache"

在中间件中:

'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',

EDIT2:哦。

好的,所以我阅读了有关会话引擎的内容:

SESSION_ENGINE = "django.contrib.sessions.backends.cache"

https://docs.djangoproject.com/en/1.11/topics/http/sessions/#using-cached-sessions

因为我在开发中使用缓存而不是数据库,这可以解释为什么我没有看到数据库中发生任何事情。我猜 Heroku 中的缓存有问题。

原来缓存存储在 Heroku 上不起作用,这个答案清除了所有问题: