2013-06-03 7 views
29

Wie kann ich Informationen über den angemeldeten Benutzer in einer Django-Anwendung erhalten?Wie kann ich den Benutzernamen des eingeloggten Benutzers in Django erhalten?

Zum Beispiel:

Ich brauche den Benutzernamen des angemeldeten Benutzers wissen, zu sagen, wer eine Bewertung geschrieben:

<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 ich den Benutzernamen, aber in der Vorlage, I müssen diese Informationen aus der Sicht bekommen.

Danke. =)

+0

Was ist 'usario' ist es das Benutzerobjekt oder das Benutzerprofil? – karthikr

+0

Ja, ist das Profil, aber ich muss den Benutzernamen in der Ansicht im Modell speichern. =) –

+0

ok. .überprüfe die Antwort. So greifen Sie auf den Benutzernamen in der Ansicht – karthikr

Antwort

47

können Sie das Anfrage-Objekt verwenden, die angemeldeten Benutzer zu finden

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

, wenn Sie auf die alte Weise von writting Ansichten verwenden, in der Art von Funktions-Based-Ansichten ...

Ihre Ansicht nach, führen Sie eine neue Variable usuario genannt Schaffung wahrscheinlich den request.user zu retten ...

aber wenn Sie die Template ein context_instance Rückkehr, um den Wert des Kontextes des Antrags vorbei, werden Sie hol t Er protokollierte den Benutzer, indem er auf request zugreift.

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

zu. Um dies zu verwenden, müssen Sie den 'request template context processor' in Ihrem' settings.py' installiert haben. [see this] (http://stackoverflow.com/questions/13713077/get-user-information-in-django-templates) – ray6080

7

'request.user' hat der angemeldete Benutzer.
'request.user.username' gibt den Benutzernamen des angemeldeten Benutzers zurück.

+0

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag - du kannst deine eigenen Beiträge jederzeit kommentieren, und sobald du genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) hast, wirst du das tun in der Lage sein [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment). – Sathish

+0

es wird Benutzerobjekt zurückgeben.Sie können einige Benutzereigenschaften von diesem Objekt abrufen. – ancho

27

request.user.get_username() oder request.user.username, ersteres ist bevorzugt.

Django docs say:

Da die User-Modell ausgelagert werden können, sollten Sie diese Methode verwenden, anstatt den Benutzernamen Attribut direkt zu referenzieren.

P.S. Verwenden Sie für Vorlagen {{ user.get_username }}

0

request.user.get_username() wird eine Zeichenfolge der Benutzer E-Mail zurückgeben.

request.user.username wird eine Methode zurückgeben.