python - example - django title template




Comment accéder au profil de l'utilisateur dans un template Django? (4)

Je ne sais pas pourquoi c'est différent pour moi, mais je dois utiliser {{user}} plutôt que {{request.user}}.

Je stocke des informations supplémentaires par utilisateur en utilisant AUTH_PROFILE_MODULE .

Nous pouvons accéder à l'utilisateur dans un template Django en utilisant {{ request.user }} mais comment accéder aux champs du profil puisque le profil n'est accessible que via une fonction user.get_profile() ?

Est-il vraiment nécessaire de passer explicitement le profil dans le modèle à chaque fois?


Oui, il est possible d'accéder au profil à partir du modèle en utilisant request.user.get_profile

Cependant, il y a une petite mise en garde : tous les utilisateurs n'auront pas de profils, ce qui était dans mon cas avec les utilisateurs admin. Donc, appeler directement {{ request.user.get_profile.whatever }} partir du modèle provoquera une erreur dans de tels cas.

Si vous êtes sûr que tous vos utilisateurs ont toujours des profils, vous pouvez appeler depuis le modèle en toute sécurité, sinon appelez get_profile() depuis try-except block dans votre vue et passez-le au template.


Si vous utilisez Django> 1.5, vous ne pouvez plus utiliser get_profile .

Si vous avez une ancienne application, vous devez supprimer AUTH_PROFILE_MODULE = 'myapp.profile' de votre settings.py .

Si vous utilisez models.OneToOneField(User) dans votre classe Profile, vous pouvez simplement utiliser

{{ request.user.profile.whatever }}

dans votre template Django


Utilisez {{ request.user.get_profile.whatever }} . Le langage de template de Django appelle automatiquement les choses qui sont appelables - dans ce cas, la méthode .get_profile() .





django-templates