我遇到了一个问题,我分配request.user
给一个名为 的变量prior_user
,然后基本上验证了用户,然后检查是否request.user != prior_user
. 我希望它们不一样,prior_user
应该包含 `AnonymousUser. 令我惊讶的是,它们是一样的。
示例代码:
prior_user = request.user # request object, obtained froma view
authenticate_user(request) # some function that authenticates
print prior_user.username != request.user.username # returns False i.e.they are the same!
然后我发现prior_user 实际上包含一个django.utils.functional.SimpleLazyObject 的实例,所以我认为它是某种惰性查找类型的东西,即prior_user 的值在实际使用之前不会被查找。查看源代码,我无法确认这一点。
任何有 django 经验的人都可以告诉我发生了什么以及为什么需要它?
这让我有点动摇,因为通常的赋值语句不能按我预期的方式工作,而 Django 中还有什么这样的行为?我也没有在文档中看到这一点。
所以任何对 django 有超人了解的人都可以提供一些清晰的信息吗?