2010-06-03 458 views
3

我有一个迷你应用程序,用户可以登录,查看他们的个人资料,并关注对方。 “关注”是一种类似于虚拟社区中常规的“朋友”关系的关系,但它不一定是互惠的,这意味着人们可以关注用户,而不需要用户追踪那个跟随他的人。 我的问题是: 如果我是一个登录用户,我导航到一个配置文件X,并按下按钮,我怎么能采取当前配置文件ID?(当前配置文件的意思是我的配置文件,登录用户,现在正在查看)django获取当前用户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)) 

在此先感谢!

回答

0

如果您将用户的个人资料添加到您的表单中,您可以将其传递给您的信息。

有很多方法可以做到这一点。你可以在你的FollowForm中添加一个隐藏字段(作为实例传入配置文件)。

你可以通过插入一个隐藏的领域,如更多的手动做到这一点:

<input type="hidden" name="profile_id" value="{{ profile.id }}" /> 

然后你可以改变上面的代码:

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

或者,也许你已经有配置文件的用户身份证在你的看法?

+0

它似乎是正确的,但我得到一个错误:需要更多超过1的价值来解压 ,我不明白为什么我有超过一个值的声明美国 谢谢! – dana 2010-06-03 18:58:35

+2

任何人都可以改变隐藏领域的价值...... – 2013-07-18 22:08:25

15

尝试request.user.id。但是有一个更好的做法。让我看看。

http://docs.djangoproject.com/en/1.2/topics/db/optimization/是一个很好的开始,充满了良好的做法。 在你的情况下,使用request.user.id

+0

是的。这个想法是不采取当前登录用户(在我上面的例子中我登录)的id,但是我正在访问的用户的个人资料的id,我想跟随。 非常感谢您的关注! – dana 2010-06-03 16:18:52

+1

好吧,想象个人资料的网址是/ user/ /,那么遵循某个人的动作可以恢复为POST的URL,如/ user//follow /其中id是user.id你想跟随的人。 – dzen 2010-06-03 16:22:39

+0

是的。这似乎是合乎逻辑的,正确的:)我现在就试试,并发布结果。谢谢 ! :) – dana 2010-06-03 16:29:00