看到我对类似问题的回答。
Django延迟加载,
request.user因此它可以是
User或
AnonymousUser取决于身份验证状态。它仅“唤醒”并在访问属性时返回适当的类。不幸的是,
__class__这不算在内,因为那是原始的类属性。有时您可能需要知道这实际上是一种
SimpleLazyObject类型,因此将其代理到
User或将是错误的
AnonymousUser。
总而言之,您根本无法进行这种比较。但是,您 真正
要在这里实现什么?如果你想检查它是否是一个
User或者
AnonymousUser,有
request.user.is_authenticated()针对,例如。
作为一般规则,您不应滥用鸭子类型。参数必须始终是特殊的类型或子类型(
User或
UserSubClass),即使不必 一定
如此。否则,您将得到混乱而脆弱的代码。



