如何在Django中将用户数据添加到url?

时间:2016-08-19 10:43:03

标签: 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", {'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?

1 个答案:

答案 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')
]