我在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", {'user': user})
这是我的网址
urlpatterns = [
url(r'^user/', userView, name='user'),
]
我的用户登录后,我希望他在网址中查看他的pk号码。即,如果用户的PK为3
并且用户将其浏览器指向www.myapp.com/user
,则地址栏中的URL应更改为www.myapp.com/user/3/
。我该如何做到这一点?我知道我需要将URL的RegEx编辑为
url(r'^user/(?P<user_id>[0-9]+)/$', userView, name='user')
但如何将PK号传递给URL?
答案 0 :(得分: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})
您的网址格式也应如下
urlpatterns = [
url(r'^user/', userLoginView, name='userlogin'),
url(r'^user/(?P<user_id>[0-9]+)/$', userView, name='user')
]