简体   繁体   English

在 django session 中正确存储和访问用户

[英]storing and accessing users properly in django session

Here I am trying to store selected users in some django session and for this I have tried like this but while retrieving the users from session in another view I am getting empty queryset.How can i get the users which are stored in session in another django fucntion? Here I am trying to store selected users in some django session and for this I have tried like this but while retrieving the users from session in another view I am getting empty queryset.How can i get the users which are stored in session in another django功能?

storing selected users in session将选定的用户存储在 session

  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'])

here trying to retrieve these session's users in another view这里试图在另一个视图中检索这些会话的用户

 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

You are not setting the user list in session .您没有在session中设置user列表。 You are setting email in the variable session["user"] but querying id .您在变量session["user"]中设置 email 但查询id Also, you are trying to set the session value as a list object but using default value as a dict object.此外,您正在尝试将 session 值设置为list object,但使用默认值作为dict object。

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

Now you can retrieve the list of user.id .现在您可以检索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']

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM