web-dev-qa-db-fra.com

Comment obtenir le nom d'utilisateur de l'utilisateur connecté à Django?

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. =)

48
Cris Towi

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
71
karthikr

request.user.get_username() ou request.user.username, ancien est préféré.

Les documents Django disent:

É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 }}

31
user

'request.user' a l'utilisateur connecté.
'request.user.username' renverra le nom d'utilisateur de l'utilisateur connecté.

7
ancho

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>
3
Luan Fonseca

Pour les vues classées, utilisez self.request.user.id.

1
sakabio

request.user.get_username() renverra une chaîne du courrier électronique de l'utilisateur.

request.user.username retournera une méthode.

1
Dan Walters