zoukankan      html  css  js  c++  java
  • python测试开发django(24)--表单提交之post登录案例

    前言

    注册和登录功能实现都是post请求接口,只不过注册是往数据库插入数据,登录时从数据库里面查询数据。本篇接着上一篇写个简单的登录页面请求,用户注册是密码加密存储,用户登录时候对输入的密码校验。

    登录页面

    templates/login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录页面</title>
    </head>
    <body>
    <h1>欢迎登录!</h1>
    <form action="" method="post">
        {% csrf_token %}
          <p>
            用户名:<input type="text" id="id_username" name="username", required="required"> *
          </p>
          <p>
             密码:<input type="text" id="id_username" name="password", required="required"> *
        </p>
    
        <p>
              <input type="submit" value="登录">
        </p>
    </form>
    
    </body>
    </html>
    

      视图与urls

    查询数据库用户名和密码

    def login(request):
        '''登录页面'''
        if request.method == "GET":
            return render(request, 'login.html')
        if request.method == "POST":
            # 查获取页面的用户名,密码
            username = request.POST.get('username')
            psw = request.POST.get('password')
            # 查询用户名和密码
            user_obj = Users.objects.filter(user_name=username, pwd=psw).first()
            if user_obj:
                return HttpResponse('登陆成功')
            else:
                return HttpResponse('用户名或密码错误')
    

     urls.py访问地址

    urlpatterns = [
        # 新增用户
        url(r'^register/', views.register),
        url(r'^login/', views.login),
    ] 

    密码加密make_password

    密码如果明文存储到数据库的话不太安全,一般会加密存储,django里面提供了一套加密方法make_password,解密用check_password,需先导入

    from django.contrib.auth.hashers import make_password,check_password
    

     views.py里面写入数据库时,加个make_password方法转下就行了

     # 第一种写法 -- 推荐
                user = Users()
                user.user_name = username
                user.pwd = make_password(psw) #加密存储
                user.mail = mail
                user.save()
    

     此时需要将数据库中pwd的长度加大,不然会报错; 

     

     重新注册,存入的pwd数据就是加密后的了

     校验密码check_password

    登录的时候,我们需要校验用户对应的密码,由于前面加密存储密码了,校验的时候,先获取用户输入的密码,然后读取数据库对应用户密码,再通过check_password函数校验密码,密码一致返回True,不一致返回False。

    def login(request):
        '''登录页面'''
        if request.method == "GET":
            return render(request, 'login.html')
        if request.method == "POST":
            # 先查询数据库是否有此用户名
            username = request.POST.get('username')
            psw = request.POST.get('password')
            # 查询用户名和密码
            users = Users.objects.filter(user_name=username).first()
            is_pwd=check_password(psw,users.pwd)
            if is_pwd:
                return HttpResponse('登陆成功')
            else:
                return HttpResponse('用户名或密码错误')
    

      

  • 相关阅读:
    2020软件工程最后一次作业 it
    javaArrayList it
    js二进制数据转图片 it
    002addTwoNumbers it
    1.1选择select it
    js保存图片至本地 it
    npm ERR! code E404 it
    2020软件工程第三次作业 it
    2020软件工程第二次作业 it
    react打包后找不到静态文件 it
  • 原文地址:https://www.cnblogs.com/canglongdao/p/14111403.html
Copyright © 2011-2022 走看看