Comment obtenir des informations sur l'utilisateur connecté dans une application Django?
Par exemple:
J'ai besoin de connaître le nom d'utilisateur de l'utilisateur connecté pour dire qui a posté un avis:
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ usuario.username.title }} </h2>
{% csrf_token %}
{{formulario.as_p}}
<p><input type='submit' value='Confirmar' /></p>
</form>
Dans usuario.username.title
Je reçois le nom d'utilisateur, mais dans le modèle, je dois extraire ces informations de la vue.
Merci. =)
Vous pouvez utiliser l'objet de requête pour trouver l'utilisateur connecté.
def my_view(request):
username = None
if request.user.is_authenticated():
username = request.user.username
Selon https://docs.djangoproject.com/fr/2.0/releases/1.10/
Dans la version Django 2.0, la syntaxe est passée à
request.user.is_authenticated
request.user.get_username()
ou request.user.username
, ancien est préféré.
Étant donné que le modèle utilisateur peut être échangé, vous devez utiliser cette méthode au lieu de référencer directement l'attribut nom d'utilisateur.
P.S. Pour les modèles, utilisez {{ user.get_username }}
'request.user' a l'utilisateur connecté.
'request.user.username' renverra le nom d'utilisateur de l'utilisateur connecté.
si vous utilisez l'ancienne façon d'écrire des vues, comme des vues basées sur des fonctions ...
de votre point de vue, vous créez une nouvelle variable appelée usuario
pour enregistrer le request.user probablement ...
mais si vous revenez au Template
a context_instance
, en transmettant la valeur du contexte de la demande, vous obtiendrez l'utilisateur connecté, en accédant simplement à request
.
// In your views file
from Django.shortcuts import render_to_response
from Django.template import RequestContext
def your_view(request):
data = {
'formulario': Formulario()
# ...
}
return render_to_response('your_template.html',
data, context_instance=RequestContext(request))
// In your template
<form id='formulario' method='POST' action=''>
<h2>Publica tu tuit, {{ request.user.username.title }} </h2>
{% csrf_token %}
{{ formulario.as_p }}
<p><input type='submit' value='Confirmar' /></p>
</form>
Pour les vues classées, utilisez self.request.user.id.
request.user.get_username()
renverra une chaîne du courrier électronique de l'utilisateur.
request.user.username
retournera une méthode.