当前位置 主页 > 服务器问题 > Linux/apache问题 >

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

    栏目:Linux/apache问题 时间:2019-12-02 10:22

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

    1 用户注册:

    from django.contrib import auth
    from django.contrib.auth.models import User
    from django.views.decorators.csrf import csrf_exempt
    from django.http import HttpResponseRedirect
    # 用户注册
    @csrf_exempt
    def 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_exempt
    def 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>