相关疑难解决方法(0)

django:django.utils.functional.SimpleLazyObject的目的?

我遇到了一个问题,我分配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有超人类知识的人可以提供一些清晰度吗?

django django-views

44
推荐指数
1
解决办法
2万
查看次数

标签 统计

django ×1

django-views ×1