views.py
class ProfileEdit(UserPassesTestMixin, UpdateView):
model = User
form_class = ProfileForm
template_name="profile/profile_new.html"
def test_func(self):
x = self.request.user.id
print (x)
y = self.kwargs['pk']
print (y)
a = True
b = False
if self.request.user.id == self.kwargs['pk']:
print (a)
else:
print (b)
return redirect ('/login/')
正如您在输出图像中看到的那样,测试条件实际上满足..但为什么它会打印" False"如果它是真的。
答案 0 :(得分:0)
来自请求对象中的用户的用户标识是整数,而self.kwargs['pk']
是字符串,除非您对其执行某些操作。如果您打印repr()
值,则会看到差异,因为字符串会在其周围加上引号,因为它是从url路径中提取的,而url路径本身就是一个字符串。
尝试使用int()
进行投射,然后再比较self.request.user.id == int(self.kwargs['pk'])
。如果有可能看起来不像整数,请不要忘记ValueError
。