我遇到了一个问题,我分配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!
Run Code Online (Sandbox Code Playgroud)
然后我发现prior_user实际上包含一个django.utils.functional.SimpleLazyObject的实例,所以我假设它是某种懒惰的查找类型的东西,即在实际使用之前不会查找prior_user的值.看一下源代码,我无法证实这一点.
有django经验的人可以告诉我发生了什么以及为什么需要它?
这让我有点动摇,因为通常的赋值语句不能按我预期的方式工作,Django中的其他内容是什么样的呢?我也没有在文档中看到这一点.
那么对django有超人类知识的人可以提供一些清晰度吗?