【问题标题】:How to create an "empty" session in Django?如何在 Django 中创建一个“空”会话?
【发布时间】:2015-01-04 16:46:01
【问题描述】:

如何在 Django 中创建会话,但不设置任何特定变量?

我只需要将会话 cookie 发送给客户端。

【问题讨论】:

  • 在对应的会话中设置没有任何数据的会话cookie有什么好处?
  • 问题是当我将客户端重定向到页面时,我想启动一个会话(并使用变量)。显然,cookie 不能安装在 HTTP 重定向中,所以我需要在重定向响应之前设置 cookie。

标签: django session django-sessions


【解决方案1】:

就目前而言,除非您以某种方式修改 request.session 字典,否则 Django 不会创建会话 ID/密钥。以下小“hack”已经足以创建会话:

request.session[None] = None

放置这个 sn-p 的最通用的地方是基于类的视图的 dispatch() 方法。您可以创建一个 mixin 以使事物可重用:

class EmptySessionMixin:
    def dispatch(self, request, *args, **kwargs):
        request.session[None] = None
        return super().dispatch(request, *args, **kwargs)

class MyView(EmptySessionMixin, View):
    pass

【讨论】:

  • 这打破了django-debug-toolbar
【解决方案2】:

在我的应用程序中,我只是这样做了:

request.session.save()

创建一个(真正的)空会话...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多