Python 在视图呈现为Django后更改会话变量

Python 在视图呈现为Django后更改会话变量,python,django,Python,Django,我有两个会话变量需要在呈现后进行更改- def my_view(request) rend= render(request,"chat_page.html",{"answer":questions[request.session["stage"]]["instruction"]}) request.session["stage"]=request.session["stage"]+1 return rend 我观察到,首先修改stage变量,然后进行渲染。有没有一种

我有两个会话变量需要在呈现后进行更改-

def my_view(request) 
    rend= render(request,"chat_page.html",{"answer":questions[request.session["stage"]]["instruction"]})
    request.session["stage"]=request.session["stage"]+1

    return rend

我观察到,首先修改
stage
变量,然后进行渲染。有没有一种方法可以在渲染完成后更改
stage
的值。

我相信您需要手动创建一个HttpResponse并插入渲染字符串,因为
render
方法返回一个迭代器,而迭代器不是评估到最后一刻

content = render_to_string("chat_page.html",{"answer":questions[request.session["stage"]]["instruction"]})
response = HttpResponse(content)
request.session["stage"] = request.session["stage"] + 1
return response

渲染后是否表示希望仅在渲染模板后修改阶段?我想那是不可能的。但是为什么你只想在渲染后修改它呢?这是一个基本的聊天机器人应用程序,其中stage基本上是必须进行渲染的问题编号。渲染完成后,回复会再次调用stage=stage+1的同一页面,这是下一个问题,因此现在必须进行渲染。我认为它应该可以工作了。在将每个答案传递到上下文后,您将递增。它不起作用。但传递到请求的值仍比内容中的会话[“阶段”]大一个。很抱歉,上述代码的顺序错误。您需要在更改会话之前创建响应。我更新了答案。