首页 > 运营 > 帮助中心 > 正文

django 框架实现的用户注册、登录、退出功能示例

2020-07-28 13:56:15
字体:
来源:转载
供稿:网友

本文实例讲述了django 框架实现的用户注册、登录、退出功能。分享给大家供大家参考,具体如下:

1 用户注册:

from django.contrib import authfrom django.contrib.auth.models import Userfrom django.views.decorators.csrf import csrf_exemptfrom django.http import HttpResponseRedirect# 用户注册@csrf_exemptdef register(request):  errors = []  account = None  password = None  password2 = None  email = None  CompareFlag = False  if request.method == 'POST':    if not request.POST.get('account'):      errors.append('用户名不能为空')    else:      account = request.POST.get('account')    if not request.POST.get('password'):      errors.append('密码不能为空')    else:      password = request.POST.get('password')    if not request.POST.get('password2'):      errors.append('确认密码不能为空')    else:      password2 = request.POST.get('password2')    if not request.POST.get('email'):      errors.append('邮箱不能为空')    else:      email = request.POST.get('email')    if password is not None:      if password == password2:        CompareFlag = True      else:        errors.append('两次输入密码不一致')    if account is not None and password is not None and password2 is not None and email is not None and CompareFlag :      user = User.objects.create_user(account,email,password)      user.save()      userlogin = auth.authenticate(username = account,password = password)      auth.login(request,userlogin)      return HttpResponseRedirect('/blog')  return render(request,'blog/register.html', {'errors': errors})

2 用户登录:

@csrf_exemptdef my_login(request):  errors =[]  account = None  password = None  if request.method == "POST":    if not request.POST.get('account'):      errors.append('用户名不能为空')    else:      account = request.POST.get('account')    if not request.POST.get('password'):      errors = request.POST.get('密码不能为空')    else:      password = request.POST.get('password')    if account is not None and password is not None:      user = auth.authenticate(username=account,password=password)      if user is not None:        if user.is_active:          auth.login(request,user)          return HttpResponseRedirect('/blog')        else:          errors.append('用户名错误')      else:        errors.append('用户名或密码错误')  return render(request,'blog/login.html', {'errors': errors})

3 用户退出:

def my_logout(request):  auth.logout(request)  return HttpResponseRedirect('/blog')

URL:

urlpatterns = [  url(r'^$', views.index, name='index'),  url(r'^p/(?P<article_id>[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:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Title</title></head><body>{% if errors %}    <li>      {% for error in errors %}       <p >        {{error}}       </p>       {% endfor %}    </li>  {% endif %}<table>  <form action="" method="post">{% csrf_token %}    <tr>      <td>        <label >用户名:</label>      </td>      <td>        <input type = 'text' placeholder="输入用户名" name = 'account'>      </td>    </tr>    <tr>      <td>        <label >密码:</label>      </td>      <td>       <input type = 'password' placeholder="输入密码" name = 'password'>      </td>    </tr>     <tr>       <td>        <label >确认密码:</label>       </td>       <td>         <input type = 'password' placeholder="再次输入密码" name ='password2'>       </td>     </tr>     <tr>       <td>         <label>邮箱:</label>       </td>       <td>         <input type="email" placeholder="输入邮箱" name = 'email'>       </td>     </tr>     <tr>       <td>          <input type = 'submit' placeholder="Login" value="登录">       </td>     </tr>  </form></table></body></html>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表