1、自定义用户登录login.html
2、认证用户
#点击login.html中submit按键触发登录动作
def login_action(request):
username = request.POST['username']
password = request.POST['password']
pre_url = request.POST['pre_url']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request,user)
# Redirect to a success page.
if pre_url:
return redirect(pre_url)
else:
return redirect('/')
else:
# Return a 'disabled account' error message
return redirect('/disabled_account/')
else:
# Return an 'invalid login' error message.
return redirect('/invalid_login/')
3、需要将request传入login.html,以便在头部显示登录用户名称
settings.py添加如下段落:
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.request",
)
template中的其它页面需要用到username需要在render页面时传入request:
context_instance参数将request传入login.html
render_to_response('login.html', context_instance=RequestContext(request))
在login.html中获取username
{% if request.user.is_authenticated %}
<li align="left"></br><a href="logoutview" data-toggle="tooltip" title="Loginoff"><i class='icon-share'></i>{{ request.user.username }}Logout</a></li>
{% else %}
<li align="left"></br><a href="/login/" data-toggle="tooltip" title="Login"><i class='icon-share'></i>Login</a></li>
{% endif %}
4、如果想在template中使用用户权限
如:User.objects.get(username='wangsan').get_group_permissions()
需要自定义tag
permission部分详细说明见下一篇文章
参考:django中的admin模块模板render用的是TemplateResponse方法