我是django
的新手。我在我的应用中实现了用户login
机制。当我登录时,用户可以通过打开管理员应用程序验证用户是否已登录并且用户确实已登录。现在,当我尝试向用户提供例如{{ Hello user.username }}
的消息时,我什么都没得到。以下是我的完整代码。
view.py
def login_user(request):
context = RequestContext(request)
if request.method == "POST":
login_username = request.POST['username']
login_password = request.POST['password']
user = authenticate(username=login_username,password=login_password)
if user is not None:
if user.is_active:
login(request,user)
return HttpResponseRedirect('/albums/')
else:
print "Your Account is disabled"
else:
print "Invalid login details: {0}, {1}".format(login_username, login_password)
return HttpResponse("Invalid login details supplied.")
else:
return render(request,'music/login.html',{},context)
albums.html
{% if user.is_authenticated %}
<h1>hello {{ user.username }}!</h1>
{% else %}
<h1>hello world!</h1>
{% endif %}
帮助我,我正在使用带有python 2.7的Django 1.10版本
答案 0 :(得分:2)
由于您未在模板上下文中提供user
变量,因此无法正常工作。因此,要么将user
变量添加到视图中的上下文中。
# views.py
# ...
def login_user(request):
context = RequestContext(request)
if request.method == "POST":
login_username = request.POST['username']
login_password = request.POST['password']
user = authenticate(username=login_username,password=login_password)
if user is not None:
if user.is_active:
login(request,user)
return HttpResponseRedirect('/albums/')
else:
print "Your Account is disabled"
else:
print "Invalid login details: {0}, {1}".format(login_username, login_password)
return HttpResponse("Invalid login details supplied.")
else:
context['user'] = user
return render(request,'music/login.html',{},context)
或者
尝试访问
request.user
代替。通常,上下文处理器会自动将request
变量添加到上下文中。
{% if request.user.is_authenticated %}
<h1>hello {{ request.user.username }}!</h1>
{% else %}
<h1>hello world!</h1>
{% endif %}
答案 1 :(得分:1)
您似乎将空上下文传递给模板。试试这个:
return render(request,'music/login.html',{'user':user})