2013-06-03 6 views
29

Come posso ottenere informazioni sull'utente loggato in un'applicazione Django?Come posso ottenere il nome utente dell'utente loggato in Django?

Ad esempio:

ho bisogno di sapere il nome utente del utente connesso a dire che ha pubblicato una recensione:

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

In usuario.username.title ottengo il nome utente, ma nel modello, ho bisogno di ottenere quell'informazione dalla vista

Grazie. =)

+0

cos'è 'usario' è l'oggetto utente o il profilo utente? – karthikr

+0

Sì, è il profilo, ma ho bisogno di ottenere il nome utente nella vista per salvare nel modello. =) –

+0

ok. . Controlla la risposta. è così che accedi al nome utente dalla vista – karthikr

risposta

47

È possibile utilizzare l'oggetto di richiesta di trovare l'utente collegato

def my_view(request): 
    username = None 
    if request.user.is_authenticated(): 
     username = request.user.username 
3

se si utilizza il vecchio modo di vedute scrittori di, in termini di funzioni-base-Views ...

a suo avviso, si sta creando una nuova variabile chiamata usuario per salvare il request.user probabilmente ...

ma se tornare al Template un context_instance, passando il valore del contesto della richiesta, sarà prendi t ha registrato l'utente, semplicemente accedendo allo 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> 
+0

Per usare questo, devi avere il '' processore di contesto dei template di richiesta 'installato in 'settings.py'. [vedi questo] (http://stackoverflow.com/questions/13713077/get-user-information-in-django-templates) – ray6080

7

'request.user' ha l'utente collegato.
'request.user.username' restituirà il nome utente dell'utente connesso.

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – Sathish

+0

restituirà l'oggetto Utente.puoi ottenere alcune proprietà utente da questo oggetto. – ancho

27

request.user.get_username() o request.user.username, precedente è preferito.

Django docs say:

Poiché il modello utente può essere scambiato fuori, si dovrebbe utilizzare questo metodo invece di fare riferimento direttamente l'attributo nome utente .

P.S. Per i modelli, utilizzare {{ user.get_username }}

0

request.user.get_username() restituirà una stringa dell'email dell'utente.

request.user.username restituirà un metodo.