您可以将用户名传递到url
正则表达式参数并从中获取请求用户request
class:
view:
def user_page(request, username):
try:
user = User.objects.get(username=username)
except User.DoesNotExists:
raise Http404
# or use shortcut get_object_or_404(User, username=username)
if request.user.username != user.username:
raise Http404
return render(request, 'templates/user_template', {'user':user})
urls:
url(r'^(?<username>\w+)/page/$', views.user_page, name='user_page')
Note: username
字段不是有效的选择,如果它不是唯一的,当您从其中获得超过一个用户时,它将产生错误User.objects.get()
。更好用pk
用户页面查找的字段。
但是有更简单的方法来为请求用户构建用户页面。只有一个没有关键字参数的 url,它为经过身份验证的用户响应数据:
view:
def user_page(request):
user = None
if request.user.is_authenticated():
user = User.objects.get(pk=request.user.pk)
return render(request, 'templates/user_template', {'user': user} )
urls:
url(r'^page/$', views.user_page, name='user_page')
现在它根据请求用户或返回数据None
如果用户未经过身份验证