其实我是django和python的新手。在/templates/home.html中,添加了 {{user.username}} ,显示当前已登录的用户名
<p>Welcome {{ user.username }} !!!</p>
我想在 views.py 文件中获取当前登录的用户名。如何获得用户名?
我尝试了不同的方式,但我没有得到结果
user = User.objects.get(username=request.user.username)
username = request.GET['username']
def sample_view(request):
current_user = request.user
print(current_user)
请告诉我,如何实现我的结果。
我的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)
答案 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告诉他们,就像这样: