me encontré con un problema por el que he asignado request.user
a una variable llamada prior_user
, a continuación, el usuario autenticado en esencia, después se comprueba para ver si request.user != prior_user
. Esperaba que no fueran iguales y que prior_user
debería contener `Usuario Anónimo. Para mi sorpresa, eran lo mismo.django: ¿Propósito de django.utils.functional.SimpleLazyObject?
Código de ejemplo:
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!
entonces descubrí prior_user en realidad contiene una instancia de django.utils.functional.SimpleLazyObject así que supongo que es una especie de cosa de tipo de búsqueda perezosa es decir, valor de prior_user no se busca hasta que realmente se usa. Al mirar el código fuente, no puedo confirmarlo.
¿Alguien con experiencia django puede decirme qué está pasando y por qué es necesario?
Esto me deja un poco de control, debido a que la instrucción de asignación habitual no funciona de la manera que esperan y lo demás dentro de Django actúa así? Tampoco vi esto descrito en el docs.
Entonces, ¿alguien con un conocimiento sobrehumano de django puede proporcionar algo de claridad?
¡Gracias, eso fue muy útil para un principiante de django como yo! – donogood
+1 para la gran explicación! – Anoyz