In the django.contrib.auth middleware I see the code:
class AuthenticationMiddleware(object):
def process_request(self, request):
assert hasattr(request, 'session'), "requires session middleware"
request.__class__.user = LazyUser()
return None
Please avdise me why such a form request._ class _.user = LazyUser() used? Why not just request.user = LazyUser() ?
I know what _ class _ attribute means, but as I undersand direct assignment to instance variable will be better. Where I'm wrong?
LazyUser
is descriptor-class. According to documentation it can be only class attribute not instance one:
For instance,
a.x
has a lookup chain starting witha.__dict__['x']
, thentype(a).__dict__['x']
, and continuing through the base classes oftype(a)
excluding metaclasses.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With