Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同选项卡中django会话变量的不同值_Django_Django Sessions - Fatal编程技术网

不同选项卡中django会话变量的不同值

不同选项卡中django会话变量的不同值,django,django-sessions,Django,Django Sessions,考虑以下场景: 用户搜索某物并创建一个列表(request.session['list']) 用户可以通过ajax调用筛选此列表 现在用户打开一个新选项卡,进行另一次搜索,因此现在会话变量列表被设置为另一次搜索的新列表 用户返回到第一个选项卡并再次过滤结果。这一次,随着会话变量的更改,筛选结果来自另一个选项卡中的新列表 有没有办法为不同选项卡的会话变量设置不同的值?或解决此问题的任何其他解决方案?服务器应用程序通过会话ID标识您的请求和会话,这意味着它不知道选项卡等。事实上,如果您给我您的会话I

考虑以下场景:

  • 用户搜索某物并创建一个列表(request.session['list'])
  • 用户可以通过ajax调用筛选此列表
  • 现在用户打开一个新选项卡,进行另一次搜索,因此现在会话变量列表被设置为另一次搜索的新列表
  • 用户返回到第一个选项卡并再次过滤结果。这一次,随着会话变量的更改,筛选结果来自另一个选项卡中的新列表

  • 有没有办法为不同选项卡的会话变量设置不同的值?或解决此问题的任何其他解决方案?

    服务器应用程序通过会话ID标识您的请求和会话,这意味着它不知道选项卡等。事实上,如果您给我您的会话ID,我将得到相同的列表(请参阅会话劫持以避免陷入此类麻烦)

    也就是说,如果您真的想这样做,您可以在会话中保存用户代理,或者利用

    您可以有
    会话['List']=…
    会话['List\u ajax']=`
    那么你应该做:
    
    如果请求,返回会话['List\u ajax']。is\u ajax()else sessoion['List']

    实现这一点没有简单的方法,也不是Django特有的。检查此问题:

    基于cookie的会话肯定不会工作,因为cookie在特定站点的选项卡之间很常见。基于带有会话或本地存储的URL的解决方案有其自身的问题,通常这不是一个好主意,因为它增加了大多数情况下不需要的复杂性


    在您的情况下,为什么不将列表存储为JavaScript数据或本地存储?在这种情况下,每个选项卡都有自己的数据

    谢谢,我正在使用django无休止的分页,当你向下滚动时,每次加载一个页面时,都会向后端发送一个ajax请求并获取结果,如果我将页面保存为JS数据,那么分页不会起作用,还有什么其他方法可以使它起作用吗?是的,如果你再次加载页面,那么JS数据将不起作用。我假设您只进行AJAX数据加载。那么您有可能使用本地存储吗?谢谢,但我没有完全理解您的解决方案,因为我基本上创建的是相同的列表类型(具有不同的内容),如何从一个选项卡发送普通请求,从另一个选项卡发送ajax请求?我的理解是搜索不会是ajax调用,仅返回列表后的筛选。如果不是这样,请参见下文