Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中将用户数据添加到url?_Python_Django - Fatal编程技术网

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

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", {'

我在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'),
]
我的用户登录后,我希望他在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/
,那么所有重定向仍然有效。详情请参见此处: