(Django)在我第二次通过同一视图呈现请求后,会话中设置的值消失

(Django) Value set in session disappears after i render the request through the same view a second time

这是正在发生的事情:

  1. HTML 模板“A”具有将名称为“var1”的变量传递给 URL1 的形式。 URL1 将请求发送到 VIEW1。 VIEW1 然后检查并成功“获取”“var1”变量,并将其设置在会话变量中 (request.session['variable'] = “var1”

  2. VIEW1 然后将请求呈现给 HTML 模板“B”,它有另一种形式,再次将名称为“var2”的变量传递给 URL1。 URL1 再次向 VIEW1 发送请求。这一次,“VAR1”不再可用于“GET”,但“VAR2”可用。但是,当我打印会话变量 (print(request.session['variable])) 时,它不再存在。

我的问题是:第二次将请求传回同一个视图是否会清除您在第一次传递时设置的任何会话变量?这显然是案例,但我不明白为什么。

之前,我使用一个全局字典变量来存储所有内容,它运行良好,但如果我导航不够快,它就会过期。因此,我转而在会话中存储我的字典。

谢谢!

再次阅读 Django 文档后终于弄明白了。

我在我的会话变量中使用了词典,并且只修改了词典的内容而不是词典本身。

默认情况下,如果您修改变量本身,Django 只会保存会话数据。在我的设置文件中创建并设置 SESSION_SAVE_EVERY_REQUEST = True 后,问题就解决了!