2016-08-19 89 views
0

我有一個功能基於視圖在Django稱爲userView如何將用戶數據添加到Django中的url?

@login_required(login_url='/login/') 
def userView(request): 
    user = None 
    if request.user.is_authenticated(): 
     user = request.user 
     user_id = user.pk 


    return render(request, "user_view.html", {'user': user}) 

,這裏是我的網址爲它

urlpatterns = [ 
    url(r'^user/', userView, name='user'), 
] 

我的用戶登錄後,我想他看到他的PK編號在URL中。即,如果用戶的PK是3並且用戶將他們的瀏覽器指向www.myapp.com/user,則地址欄中的URL應該改變爲www.myapp.com/user/3/。我如何做到這一點?我知道我需要編輯的RegEx的URL到

url(r'^user/(?P<user_id>[0-9]+)/$', userView, name='user') 

但我如何將PK號傳遞到URL?

+0

不太清楚你在問什麼。該URL已經需要一個user_id,所以如果沒有它,你就無法進入該視圖。 –

+0

我編輯了這篇文章,使其更清晰。如何將pk號碼從視圖 – P4nd4b0b3r1n0

+1

傳遞給url我仍然不太明白。你大概是從登錄重定向到這個視圖,爲什麼你不能把數字放到這個重定向的URL? –

回答

2

我不是一個Django的專家,但我的猜測是,你想將用戶重定向到他的「主頁」,他在登錄後,即可以使用redirect()方法來完成

@login_required(login_url='/login/') 
def userLoginView(request): 
    if request.user.is_authenticated(): 
     return redirect("/user/{0}".format(request.user.pk), user=request.user) 

然後再定義這將使主頁的第二視圖

def userView(request, user_id=None, user=None): 
    return render(request, "user_view.html", {'user': user}) 

而且你的URL模式應該是如下

urlpatterns = [ 
    url(r'^user/', userLoginView, name='userlogin'), 
    url(r'^user/(?P<user_id>[0-9]+)/$', userView, name='user') 
] 
+0

這個作品,謝謝! – P4nd4b0b3r1n0

+0

更好地使用Django的反向查找。你的urlpatterns看起來像這樣:'return redirect(reverse('user',kwargs = {'user_id':request.user.pk}))'。這樣,如果你將urlconf從'user/'改爲'profile/',那麼你所有的重定向都可以工作。詳情請看這裏:https://docs.djangoproject.com/en/1.10/ref/urlresolvers/#django.urls.reverse –

相關問題