Quel est le meilleur moyen d'obtenir des informations sur l'utilisateur à partir d'un modèle Django?
Par exemple, si je veux juste:
J'utilise Django-registration/authentication
Une autre méthode pour les versions actuelles de Django:
{% if user.is_authenticated %}
<p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
Remarque:
request.user.get_username()
dans les vues et user.get_username
dans les modèles. Préféré par rapport à l'attribut username
de référence directement. La sourceDjango.contrib.auth.context_processors.auth
est activé par défaut et contient la variable user Django.core.context_processors.request
template.Source: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates
{% 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
est installé dans votre settings.py
:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'Django.core.context_processors.request',
...
)
Selon le titre de la question, les éléments suivants peuvent être utiles à quelqu'un. utilisé les éléments suivants dans mon modèle:
Nom d'utilisateur : {{ user.username }}
Nom complet de l'utilisateur : {{ user.get_full_name }}
Groupe d'utilisateurs : {{ user.groups.all.0 }}
Email : {{ user.email }}
Session démarrée à : {{ user.last_login }}
Merci :)
Premièrement, premièrement, si vos champs ont changé de nom, vous devez écraser les fonctions (get_full_name (), get_short_name (), etc.), de cette façon:
def get_full_name(self):
return self.names + ' ' + self.lastnames
def get_short_name(self):
return self.names
Dans le modèle, vous pouvez le montrer de cette façon
{% if user.is_authenticated %}
<strong>{{ user.get_short_name }}</strong>
{% endif %}
ce sont les méthodes d'authentification https://docs.djangoproject.com/es/2.1/topics/auth/customizing/