如何在django中的views.py中登录用户名

时间:2016-09-30 07:25:06

标签: python html django authentication oauth

其实我是django和python的新手。在/templates/home.html中,添加了 {{user.username}} ,显示当前已登录的用户名

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

我想在 views.py 文件中获取当前登录的用户名。如何获得用户名?

我尝试了不同的方式,但我没有得到结果

  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)

  4. 请告诉我,如何实现我的结果。

    我的views.py看起来像这样。我的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)
    

1 个答案:

答案 0 :(得分:7)

如果您已启用authentication middleware,则无需执行任何此操作。用户名显示在模板中的事实表明您已启用它。每个视图都可以访问User模型的实例user = User.objects.get(username=request.user.username) 。所以以下是非常多余的

request.user.username

因为你已经拥有request.user.email !!如果你想找到用户的电子邮件,你可以user = request.user 或者只做

{{1}}

并使用新创建的变量(例如user.username)

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

  

来自AuthenticationMiddleware:AUTH_USER_MODEL的一个实例   表示当前登录的用户。如果用户当前不是   登录后,用户将被设置为AnonymousUser的实例。您可以   用is_authenticated告诉他们,就像这样: