Django获取当前用户ID

4
我有一个小程序,用户可以登录,查看他们的个人资料,并互相关注。"关注"是像虚拟社区中的普通 "朋友" 关系一样的关系,但不一定是相互的,也就是说,一个人可以关注另一个用户,而不需要被关注的用户回关他。
我的问题是:如果我作为已登录的用户,浏览到一个名为X的个人资料页面,然后点击关注按钮,如何获取当前个人资料的id?(当前个人资料指的是我正在查看的个人资料。)
视图:
   def follow(request):
      if request.method == 'POST':
    form = FollowForm(request.POST)
    if form.is_valid():
    new_obj = form.save(commit=False)
    new_obj.initiated_by = request.user
    u = User.objects. what here?
    new_obj.follow = u   
    new_obj.save()
    return HttpResponseRedirect('.')    
   else:
       form = FollowForm()     
   return render_to_response('followme/follow.html', {
       'form': form,
       }, 
      context_instance=RequestContext(request))  

感谢您的提前帮助!
2个回答

15

是的,这个想法不是获取当前登录用户的 ID(在我的上面的例子中,我已登录),而是获取我正在访问其资料并希望关注的用户的 ID。非常感谢您的关注! - dana
1
好的,假设用户资料页面的 URL 为 /user/<id>/,那么关注某个人的操作可以简化为在类似 /user/<id>/follow/ 的 URL 上进行 POST 请求,其中 id 是要关注的人的 user.id。 - dzen
是的,这看起来很合乎逻辑和正确 :) 我现在会尝试并发布结果。谢谢! :) - dana
不行,我现在明白了 :) 问题是 URL 中没有用户 ID,所以我无法从 POST 中取得它 :( - dana

1
如果您将用户的个人资料添加到表单中,可以在提交时一并传递。
有多种方法可以实现。您可以向FollowForm添加一个隐藏字段(将个人资料作为实例传递)。
您也可以手动插入一个隐藏字段,例如:
<input type="hidden" name="profile_id" value="{{ profile.id }}" />

然后,您可以将上面的代码更改为:

u = User.objects.get(request.POST['profile_id'])

或者,也许你已经在你的视图中拥有了该个人资料的用户ID?


看起来没问题,但是我收到一个错误:需要多于一个值来解包而且我不明白为什么在u的声明中有多个值。谢谢! - dana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接