利用django自带认证功能实现用户登录认证。

views.py

#Createyourviewshere.fromdjango.shortcutsimportrender_to_response,render,get_object_or_404fromdjango.httpimportHttpResponse,HttpResponseRedirectfromdjango.contrib.auth.decoratorsimportlogin_requiredfromdjango.template.contextimportRequestContextfromdjango.contrib.auth.modelsimportUserfromdjango.contribimportauthfromformsimportLoginFormdeflogin(request):ifrequest.method=='GET':form=LoginForm()returnrender_to_response('login.html',RequestContext(request,{'form':form,}))else:form=LoginForm(request.POST)ifform.is_valid():username=request.POST.get('username','')password=request.POST.get('password','')user=auth.authenticate(username=username,password=password)ifuserisnotNoneanduser.is_active:auth.login(request,user)returnrender_to_response('index.html',RequestContext(request))else:returnrender_to_response('login.html',RequestContext(request,{'form':form,'password_is_wrong':True}))else:returnrender_to_response('login.html',RequestContext(request,{'form':form,}))@login_requireddeflogout(request):auth.logout(request)returnHttpResponseRedirect("/login/")@login_requireddefindex(request):returnrender_to_response('index.html')

froms.py

#coding=utf-8fromdjangoimportformsfromdjango.contrib.auth.modelsimportUserclassLoginForm(forms.Form):username=forms.CharField(required=True,label="用户名",error_messages={'required':'请输入用户名'},widget=forms.TextInput(attrs={'placeholder':"用户名",'class':'form-control'}))password=forms.CharField(required=True,label="密码",error_messages={'required':'请输入密码'},widget=forms.PasswordInput(attrs={'placeholder':"密码",'class':'form-control'}),)defclean(self):ifnotself.is_valid():raiseforms.ValidationError("用户名和密码为必填项")else:cleaned_data=super(LoginForm,self).clean()


login.html

<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>登录</title><scripttype="text/javascript"src="/static/bootstrap/js/jquery.min.js"></script><linkrel="stylesheet"type="text/css"href="/static/bootstrap/css/bootstrap.min.css"><linkrel="stylesheet"type="text/css"href="/static/bootstrap/css/bootstrap-theme.min.css"><scripttype="text/javascript"src="/static/bootstrap/js/bootstrap.min.js"></script><styletype="text/css">html,body{margin:0;padding:0;overflow:hidden;height:100%;}#jz-login{margin:0auto;border:1pxsolid#666;background-color:#CCC;width:300px;}</style><scripttype="text/javascript">functionmakeItMiddle(){document.getElementById('jz-login').style.marginTop=(document.getElementsByTagName('body')[0].offsetHeight-document.getElementById('jz-login').offsetHeight)/2+'px';}window.onload=makeItMiddle;window.onresize=makeItMiddle;</script></head><body>{%ifpassword_is_wrong%}<divclass="alertalert-error"><buttontype="button"class="close"data-dismiss="alert">×</button><h5>错误!</h5>用户名或密码错误</div>{%endif%}<divclass="well"id="jz-login"><h2>用户登录</h2><formclass="form-horizontal"action=""method="post">{%csrf_token%}{{form}}<p></p><pclass="form-actions"><inputtype="submit"value="登录"class="btnbtn-primary"><ahref="/contactme/"><inputtype="button"value="忘记密码"class="btnbtn-danger"></a><ahref="/contactme/"><inputtype="button"value="新员工?"class="btnbtn-success"></a></p></form></div><scriptsrc="/static/bootstrap/js/jquery.min.js"></script><scriptsrc="/static/bootstrap/js/bootstrap.min.js"></script></body></html>