【问题标题】:Alternative to session variable to sore data between views?替代会话变量来存储视图之间的数据?
【发布时间】:2021-09-24 05:47:10
【问题描述】:

编辑 2021 年 7 月 16 日

目前没有回复,所以我会尽量让我的问题更准确

当我调用 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)

【问题讨论】:

    标签: django authentication session-variables change-password


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2018-01-15
      • 2014-02-07
      相关资源
      最近更新 更多