2010-06-03 166 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