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