如何将用户数据添加到Django中的url?
我有一个功能基于视图在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?
我不是一个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')
]
这个作品,谢谢! – P4nd4b0b3r1n0
更好地使用Django的反向查找。你的urlpatterns看起来像这样:'return redirect(reverse('user',kwargs = {'user_id':request.user.pk}))'。这样,如果你将urlconf从'user/
不太清楚你在问什么。该URL已经需要一个user_id,所以如果没有它,你就无法进入该视图。 –
我编辑了这篇文章,使其更清晰。如何将pk号码从视图 – P4nd4b0b3r1n0
传递给url我仍然不太明白。你大概是从登录重定向到这个视图,为什么你不能把数字放到这个重定向的URL? –