request.user不等于通过url传递的名称

时间:2012-08-01 03:55:11

标签: django

我正在尝试限制页面,因此只有页面与URL匹配的人才能访问它:

URL配置

url(r'^u/(?P<name>[-\w\d_]+)/edit/$', 'useraccounts.views.user_profile_edit')

views.py

def user_profile_edit(request, name):
    if request.user.is_authenticated() and request.user == name:
        username = User.objects.get(username=name)
        return render(request, 'useredit.html', {'user': username})

在页面加载时打印出print request.userprint name的内容到控制台显示两者在我的情况下是相同的(都是root)。但是,print bool(request.user == name)会返回False,因此视图不会进展。

发生了什么,如果适用,是否有更优雅的方式来做这件事?

1 个答案:

答案 0 :(得分:1)

你做错了。 request.user是一个对象,而name是一个字符串。

重写您的条件如下:

if request.user.is_authenticated() and request.user.username == name: