2016-09-30 2 views
0

Eigentlich bin ich sehr neu zu Django und Python. In /templates/home.html aufgenommen {{}} user.username es zur Zeit in Benutzernamen AngezeigtWie man eingeloggt wird Benutzername in views.py in django

<p>Welcome {{ user.username }} !!!</p> 

Ich möchte angemeldet zur Zeit in Benutzernamen in views.py Datei protokolliert werden. Wie bekomme ich den Benutzernamen?

Ich habe versucht, verschiedene Art und Weise, aber ich das Ergebnis

  1. user = User.objects.get(username=request.user.username)
  2. username = request.GET['username']
  3. def sample_view(request): current_user = request.user print(current_user)

Bitte sagen Sie mir, ich nicht bekommen, wie mein Ergebnis zu erzielen.

meine views.py sieht so aus. ist es irgendein Problem auf meinem views.py

#!python 
    #log/views.py 
    from django.shortcuts import render 
    from django.contrib.auth.decorators import login_required 
    from django.template import Context 
    from contextlib import contextmanager 
    # Create your views here. 
    # this login required decorator is to not allow to any 
    # view without authenticating 
    @login_required(login_url="login/") 
    def home(request): 
     return render(request,"home.html") 
#dummy_user = {{ username }} 
#user = User.objects.get(username=request.user.username) 
#username = request.GET['username'] 
#print(usernam 
#user = request.user 
#print(user) 

    def sample_view(request): 
      current_user = {} 
      #current_user['loggeduser'] = request.user 
      #or 
      current_user['loggeduser'] = request.user.username 
      return render(request,"home.html",current_user) 
      # print(current_user.id) 

Antwort

3

Vorausgesetzt, dass Sie die authentication middleware aktiviert haben, müssen Sie nicht irgendetwas davon zu tun. Die Tatsache, dass der Benutzername in Ihrer Vorlage angezeigt wird, weist darauf hin, dass Sie ihn aktiviert haben. Jede Ansicht hat Zugriff auf eine request.user, die eine Instanz eines User Modells ist. Also folgendes ist sehr viel redundante

user = User.objects.get(username=request.user.username) 

Da Sie bereits request.user.username haben !! Wenn Sie die Benutzer-E-Mail finden wollten, tun Sie request.user.email Oder nur

user = request.user 

und nutzen Sie die neu erstellte Variable (zB user.username)

Referenz: https://docs.djangoproject.com/en/1.10/ref/request-response/#django.http.HttpRequest.user

From the AuthenticationMiddleware: An instance of AUTH_USER_MODEL representing the currently logged-in user. If the user isn’t currently logged in, user will be set to an instance of AnonymousUser. You can tell them apart with is_authenticated, like so:

+0

ich bin immer NameError: Name 'Benutzer' ist nicht definiert –

+0

Was bedeutet, dass Sie meine Antwort nicht gelesen haben. Was ich gesagt habe ist, dass Sie nicht tun müssen: user = User.objects.get (username = request.user.username) ' – e4c5

+0

Sie scherzen, richtig? Anfrage ist Teil der Methode Signatur einer Ansicht – e4c5

Verwandte Themen