django 框架实现的用户注册、登录、退出功能示例
本文实例讲述了django框架实现的用户注册、登录、退出功能。分享给大家供大家参考,具体如下:
1用户注册:
fromdjango.contribimportauth fromdjango.contrib.auth.modelsimportUser fromdjango.views.decorators.csrfimportcsrf_exempt fromdjango.httpimportHttpResponseRedirect #用户注册 @csrf_exempt defregister(request): errors=[] account=None password=None password2=None email=None CompareFlag=False ifrequest.method=='POST': ifnotrequest.POST.get('account'): errors.append('用户名不能为空') else: account=request.POST.get('account') ifnotrequest.POST.get('password'): errors.append('密码不能为空') else: password=request.POST.get('password') ifnotrequest.POST.get('password2'): errors.append('确认密码不能为空') else: password2=request.POST.get('password2') ifnotrequest.POST.get('email'): errors.append('邮箱不能为空') else: email=request.POST.get('email') ifpasswordisnotNone: ifpassword==password2: CompareFlag=True else: errors.append('两次输入密码不一致') ifaccountisnotNoneandpasswordisnotNoneandpassword2isnotNoneandemailisnotNoneandCompareFlag: user=User.objects.create_user(account,email,password) user.save() userlogin=auth.authenticate(username=account,password=password) auth.login(request,userlogin) returnHttpResponseRedirect('/blog') returnrender(request,'blog/register.html',{'errors':errors})
2用户登录:
@csrf_exempt defmy_login(request): errors=[] account=None password=None ifrequest.method=="POST": ifnotrequest.POST.get('account'): errors.append('用户名不能为空') else: account=request.POST.get('account') ifnotrequest.POST.get('password'): errors=request.POST.get('密码不能为空') else: password=request.POST.get('password') ifaccountisnotNoneandpasswordisnotNone: user=auth.authenticate(username=account,password=password) ifuserisnotNone: ifuser.is_active: auth.login(request,user) returnHttpResponseRedirect('/blog') else: errors.append('用户名错误') else: errors.append('用户名或密码错误') returnrender(request,'blog/login.html',{'errors':errors})
3用户退出:
defmy_logout(request): auth.logout(request) returnHttpResponseRedirect('/blog')
URL:
urlpatterns=[ url(r'^$',views.index,name='index'), url(r'^p/(?P[0-9]+)/$',views.detail,name='detail'), url(r'^register/$',views.register,name='register'), url(r'^login/$',views.my_login,name='my_login'), url(r'^logout/$',views.my_logout,name='my_logout'), ]
注册HTML:
Title {%iferrors%}{%forerrorinerrors%} {%endif%}{{error}} {%endfor%}
{%csrf_token%}