Python 如何在Django中将用户数据添加到url?
我在Django中有一个基于函数的视图,名为Python 如何在Django中将用户数据添加到url?,python,django,Python,Django,我在Django中有一个基于函数的视图,名为userView @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", {'
userView
@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'),
]
我的用户登录后,我希望他在URL中看到他的pk号。也就是说,如果用户的主键是3
,并且用户将其浏览器指向www.myapp.com/user
,则地址栏中的URL应更改为www.myapp.com/user/3/
。我如何做到这一点?我知道我需要将URL的正则表达式编辑为
url(r'^user/(?P<user_id>[0-9]+)/$', userView, name='user')
url(r'^user/(?P[0-9]+)/$,userView,name='user')
但是我如何将PK号传递到URL?我不是Django专家,但我猜你想在用户登录后将其重定向到他的“主页”。这可以通过使用该方法来实现 然后定义将呈现主页的第二个视图
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')
]
urlpatterns=[
url(r“^user/”,userLoginView,name='userlogin'),
url(r'^user/(?P[0-9]+)/$,userView,name='user')
]
我不是Django专家,但我猜你想在用户登录后将其重定向到他的“主页”。这可以通过使用该方法来实现
然后定义将呈现主页的第二个视图
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')
]
urlpatterns=[
url(r“^user/”,userLoginView,name='userlogin'),
url(r'^user/(?P[0-9]+)/$,userView,name='user')
]
不太清楚你在问什么。这个URL已经需要一个用户id,所以如果没有用户id,你就无法访问该视图。我编辑了这篇文章以使其更清晰。如何将pk号从视图传递到url我仍然不太明白。你大概是从登录重定向到这个视图,为什么你不能把号码放到重定向URL中呢?所以当用户将浏览器指向www.myapp.com/user/
时,你希望URL更改为www.myapp.com/user/3/
(如果用户的PK是3)?@das-g,是的,这完全正确。不太清楚你在问什么。这个URL已经需要一个用户id,所以如果没有用户id,你就无法访问该视图。我编辑了这篇文章以使其更清晰。如何将pk号从视图传递到url我仍然不太明白。你大概是从登录重定向到这个视图,为什么你不能把号码放到重定向URL中呢?所以当用户将他们的浏览器指向www.myapp.com/user/
时,你希望URL更改为www.myapp.com/user/3/
(如果用户的PK是3)?@das-g,是的,这完全正确。使用Django的反向查找更好。对于urlpatterns,它看起来像:返回重定向(reverse('user',kwargs={'user\u id':request.user.pk}))
。这样,如果您将urlconf从user/
更改为,比如说,profile/
,那么所有重定向仍然有效。请参见此处了解详细信息:使用Django的反向查找更好。对于urlpatterns,它看起来像:返回重定向(reverse('user',kwargs={'user\u id':request.user.pk}))
。这样,如果您将urlconf从user/
更改为,比如说,profile/
,那么所有重定向仍然有效。详情请参见此处: