2012-12-04 8 views
28

Quelle est la meilleure façon d'obtenir des informations utilisateur à partir d'un modèle django?Obtenir des informations sur les utilisateurs dans les modèles django

Par exemple, si je veux juste:

  1. Si l'utilisateur est connecté, l'affichage « Bienvenue [nom d'utilisateur] »
  2. Sinon, afficher le bouton de connexion.

J'utilise django-enregistrement/authentification

+0

double possible de [? Comment accéder au profil de l'utilisateur dans un modèle Django] (http://stackoverflow.com/questions/422140/how-to-access-the-user -profile-dans-un-django-template) –

Répondre

38

Une autre méthode pour Django courant versions:

{% if user.is_authenticated %} 
    <p>Welcome, {{ user.get_username }}. Thanks for logging in.</p> 
{% else %} 
    <p>Welcome, new user. Please log in.</p> 
{% endif %} 


Note:

  • utilisation request.user.get_username() dans les vues & user.get_username dans les modèles. Préféré par rapport à l'attribut username directement. Source
  • Cette variable de contexte de modèle est disponible si un RequestContext est utilisé.
  • django.contrib.auth.context_processors.auth est activé par défaut & contient l'utilisateur variable
  • Vous ne devez pas activer le processeur de contexte de modèle django.core.context_processors.request.

Source: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates

36
{% if request.user.is_authenticated %}Welcome '{{ request.user.username }}' 
{% else %}<a href="{% url django.contrib.auth.login %}">Login</a>{% endif %} 

et assurez-vous que le processeur de contexte de modèle request installé dans votre settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'django.core.context_processors.request', 
    ... 
) 
Questions connexes