微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替代会话变量以在视图之间处理数据?

如何解决替代会话变量以在视图之间处理数据?

编辑 16/07/2021

目前还没有回复,如果可能的话,我会尽量让我的问题更准确

因为当我调用 PasswordChangeView 时所有会话变量都被重置,所以我需要将会话变量内容存储在其他地方 (?) 并在更改密码后重新设置我的所有会话变量(在 form_valid 的末尾) () 函数)。

希望这更清楚,有人可以帮助我完成解决方案...


我使用 Ajax(JQuery 表单插件)覆盖了 Django PasswordChangeView,它可以工作,但所有会话变量都被重置。

阅读 Django 文档,我明白这是“正常行为”,但我需要重新初始化一些会话数据;如果没有,它就没有兴趣使用 Ajax 更改密码...

一开始,我认为调用 update_session_auth_hash 函数是造成这种行为的原因,但在 form_valid 函数中似乎并非如此,request.user 已设置但请求.session 数据被重置,甚至在保存 fom 之前...

所以我的问题是当调用 PasswordChangeView 时,我可以在何时/何地检索要重新设置的会话变量?

class PasswordChangeView(auth_views.PasswordChangeView): 
 
    def form_valid(self,form):
        print('request.user',self.request.user) # return connected user
        print('request.session.get("selected_database")',self.request.session.get("selected_database")) # return None
        self.object = form.save()
        update_session_auth_hash(self.request,self.object) # prevent user’s auth session to be invalidated and user have to log in again 
        print('request.session.get("selected_database")',self.request.session.get("selected_database")) # return None
        return JsonResponse ({'data': form.is_valid()},status = 200)

解决方法

我找到了一个使用 cookie 的解决方案;这对很多人来说可能很明显,但我会发布以防万一。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。