2016-08-19 52 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 –

相关问题