为什么会话没有保留在我的 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 上不起作用,这个答案清除了所有问题:
我在 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 上不起作用,这个答案清除了所有问题: