【问题标题】:storing and accessing users properly in django session在 django 会话中正确存储和访问用户
【发布时间】:2020-02-17 11:10:57
【问题描述】:

在这里,我试图将选定的用户存储在某个 django 会话中,为此我尝试过这样,但是在另一个视图中从会话中检索用户时,我得到了空的查询集。如何获取存储在会话中的用户在另一个 django 函数中?

在会话中存储选定的用户

  selected_users = get_user_model().objects.filter(id__in=request.POST.getlist('users'))
  initial = {'users':[]}
  session = request.session.get('users',initial)
  if selected_users:
       for user in selected_users:
           if not user in session['users']:
               session['users'].append(user.email)
  print(session['users'])

这里试图在另一个视图中检索这些会话的用户

 sess = request.session.get('users',{'users':[]})
    users = get_user_model().objects.filter(pk__in=sess["users"])
    print('sess',users) #didn't worked

    request.session['users'] # didn't worked either
     

【问题讨论】:

    标签: python django session


    【解决方案1】:

    您没有在session 中设置user 列表。您在变量session["user"] 中设置电子邮件但查询id。此外,您尝试将会话值设置为 list 对象,但使用默认值作为 dict 对象。

    selected_users = get_user_model().objects.filter(id__in=request.POST.getlist('users'))
    
    session_users = request.session.get('users',[])
    if selected_users:
        for user in selected_users:
            if not user in session_users:
                session_users.append(user.id)  # append id instead of email
    print(session_users)
    
    # set the value in session
    request.session["users"] = session_users
    

    现在您可以检索user.id 的列表。

    sess_users = request.session.get('users',[])
    users = get_user_model().objects.filter(pk__in=sess_users)
    print('sess',users)
    
    print request.session['users']
    

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 2013-10-03
      • 1970-01-01
      • 2016-05-18
      • 2021-08-30
      • 1970-01-01
      • 2012-08-17
      • 2012-12-15
      • 1970-01-01
      相关资源
      最近更新 更多