Sne*_*ick 3 django django-middleware
我无法访问session_key自定义Django中间件中的。我尝试使用以下方式访问它:
session = Session.objects.get(pk=request.session._session_key)
Run Code Online (Sandbox Code Playgroud)
要么
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
session = Session.objects.get(pk=session_key)
Run Code Online (Sandbox Code Playgroud)
我得到错误:
Session matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
我已经把我的中间件在结束MIDDLEWARE_CLASSES之后django.contrib.sessions.middleware.SessionMiddleware在我的settings.py文件。
我可以在中间件中设置会话密钥,但似乎只有在显示整个页面后才能生成/访问session_key。因为第一次显示页面时会{{ request.session.session_key }}返回None我的模板。刷新页面时,我会看到session_key。session_key非常欢迎您提供任何有关如何访问的提示。
我设法使它起作用。事实证明,通常仅在呈现整个页面后才保存会话。
我设法使用以下方式将会话过早地保存在中间件中:
request.session.save()
Run Code Online (Sandbox Code Playgroud)
然后,我可以像这样保存我的模型(请注意会话后的_id,在这种情况下,您可以仅使用整数或varchar来设置外键):
visitor = Visitor()
visitor.session_id = request.session.session_key
visitor.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |