Django:在同一浏览器中的两个会话

Rex*_*exE 5 python django django-sessions

我有一个Django webapp,允许用户进行协作.每个用户都会获得一个链接,其中包含他们点击进入我网站的唯一代码.在第一页访问时,我将此唯一代码存储在其中request.session,然后在后续页面访问中检索它以识别用户在数据库中的记录.我还存储了关于用户及其会话的各种其他内容request.session.

我想允许在同一浏览器的不同窗口/选项卡中发生两个会话.这是为了使测试更容易.我的同事花了很多时间同时使用该网站测试多个用户.到目前为止,我一直在指示他们使用不同的浏览器或不同的浏览器配置文件,以便不共享会话cookie.但他们总是忘记这条指令(或做错了),当应用程序无法按预期工作时最终会感到困惑.

我的想法是user_id在每个URL中放置用户的唯一代码(被调用),然后细分request.session为多个字典,因此我的基于类的视图将具有:

def dispatch(...):
    user_id = kwargs['user_id']
    self.request_session = self.request.session[user_id]
Run Code Online (Sandbox Code Playgroud)

然后self.request_session像我通常那样使用这个变量:

    self.request_session['time_started'] = now
    ...
Run Code Online (Sandbox Code Playgroud)

然后在返回我的回复之前,将其分配回来:

    self.request.session[user_id] = self.request_session
Run Code Online (Sandbox Code Playgroud)

我认为这应该没问题,因为自己的代码会将两个会话隔离在2个单独的词典中,但如果Django(甚至第三方应用程序)在request.session中存储某些内容,它可能会崩溃.想知道是否有人建议采用另一种方式来处理这个问题.