当前位置: 首页 > article >正文

项目实战-图书管理系统之个人中心

具体实现

  • 1> 引入 《登录注册》 的模版文件
    • 将提供的素材文件夹 "登录注册 " 中的 CSS、img、JS 文件夹复制到项目根目录的static_files文件夹;将html文件复制到项目根目录的模板文件夹templates

    • 修改引入路径并测试

      • login.html

        {#  在head标签中引入css文件  #}
        <link rel="stylesheet" href="/static/css/reset.css"/>
        <link rel="stylesheet" href="/static/css/login_register.css"/>
        ​
        {#  修改跳转链接  #}
        <div class="form_reg_btn">
            <span>还没有帐号?</span><a href="/register">马上注册</a>
        </div>
        ​
        {# 在body 中引入js文件 #}
        <script type="text/javascript" src="/static/js/jquery.min.js"></script>
        <script type="text/javascript" src="/static/js/login_register.js"></script>
        register.html
        
        
        
        
        
        {#  标签中引入css文件  #}
        <link rel="stylesheet" href="/static/ss/reset.css"/>
        <link rel="stylesheet" href="/static/css/login_register.css"/>
        ​
        {#  修改跳转链接  #}
        <div class="form_reg_btn">
            <span>已有帐号?</span><a href="/login">马上登录</a>
        </div>
        ​
        {# 在body 中引入js文件 #}
        <script type="text/javascript" src="/static/js/jquery.min.js"></script>
        <script type="text/javascript" src="/static/js/login_register.js"></script>
        ​
        static_files/CSS/login_register.css 修改图片路径
        
        
        
        
        
        .login_wrap{
            background: url("/static/img/bg2.jpg") no-repeat center;
            background-size: 100%;
        }
        ​
        .logo{
            width: 500px;
            height: 150px;
            margin: 0px auto;
            background: url("/static/img/logo.png") no-repeat center;
        }

      • 编辑 users 应用的路由和视图测试模板渲染情况
        • users 应用路由

          urlpatterns = [
              # 用户登录
              re_path(r'^login$', views.login),
              # 用户注册
              re_path(r'^register$', views.register)
          ]
          users 应用视图函数
          
          
          
          
          
          from django.shortcuts import render
          from django.http import HttpResponse
          ​
          ​
          # 登录的视图函数
          def login(request):
              return render(request, "login.html")
          ​
          ​
          # 注册的视图函数
          def register(request):
              return render(request, "register.html")

        • API 测试

          登录API: http://127.0.0.1:8080/login
          注册API: http://127.0.0.1:8080/register
          登陆与注册的跳转
  • 2> 编辑路由、视图函数与模板文件完成具体业务逻辑
    • 登录实现

      • 编辑 login.html 模版文件, 修改数据提交方式

        <form action="#" method="post">
        {#  给表单添加一个隐藏的标签用来 保存csrf_token   #}
        {% csrf_token %}
        ...
        <div class="form_btn">
            {#  给登录按钮添加 id属性; 并在JS中为按钮添加点击事件的处理逻辑  #}
            <button id="login" type="button">登录</button>
        </div>
        </form>
        ​
        <script type="text/javascript" src="/static/js/jquery.min.js"></script>
        <script type="text/javascript" src="/static/js/login_register.js"></script>
        <script>
            // 添加登录按钮的点击事件
            $("#login").click(function(event){
                // 取消默认事件
                event.preventDefault();
                $.ajax({
                    url:'/login',
                    type: 'post',
                    data: {
                        // 携带csrftoken
                        csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(),
                        username: $("input[name='username']").val(),
                        password: $("input[name='password']").val()
                    },
                    success: function(response){
                        if(response.status === 200){
                            alert(response.msg);
                            // 登录成功之后跳转到指定页面
                            location.href = "#";
                        }else{
                            alert(response.msg);
                            // 将表单数据复位
                            $("form")[0].reset();
                        }
                    },
                    error:function(error){
                        console.log(error.responseText);
                    }
                })
            })
        </script>
        编辑 users 应用的 views.py 视图文件
        
        
        
        
        
        from django.shortcuts import render
        from django.http import HttpResponse, HttpResponseNotAllowed, JsonResponse
        from .models import User
        ​
        # 登录的视图函数
        def login(request):
            if request.method == "GET":
                return render(request, "login.html")
            elif request.method == "POST":
                # 读取数据
                data = request.POST
                username = data.get("username")
                password = data.get("password")
                # 数据校验,不要相信前端
                if len(username) > 20 or len(username) < 6:
                    return JsonResponse({"status": 400, "msg": "请输入长度为6-20的用户名!"})
        ​
                if not User.objects.filter(username__exact=username, password__exact=password):
                    return JsonResponse({"status": 400, "msg": "账号或密码错误!"})
        ​
                return JsonResponse({"status": 200, "msg": "登录成功!"})
            else:
                return HttpResponseNotAllowed
      • 手动在 tb_user数据表 中添加一个用户进行登录功能调试
    • 注册实现

      • 编辑 register.html 模版文件, 修改数据提交方式

        <div class="login_form">
        {% csrf_token %}
        ...
        <div class="form_btn">
            <button id="register" type="button">注册</button>
        </div>
        </form>
        ​
        <script type="text/javascript" src="/static/js/jquery.min.js"></script>
        <script type="text/javascript" src="/static/js/login_register.js"></script>
        <script>
            $("#register").click(function (event) {
                // 取消默认事件
                event.preventDefault();
                if ($("input[name='password']").val() === $("input[name='repassword']").val()) {
                    $.ajax({
                        url: '/register',
                        type: 'post',
                        data: {
                            // 携带csrftoken
                            csrfmiddlewaretoken: $("[name='csrfmiddlewaretoken']").val(),
                            username: $("input[name='username']").val(),
                            password: $("input[name='password']").val(),
                            code: $("input[name='code']").val()
                        },
                        success: function (response) {
                            if (response.status === 200) {
                                alert(response.msg);
                                // 注册成功之后跳转到登录页面
                                location.href = "/login";
                            } else {
                                alert(response.msg);
                                // 将表单数据复位
                                $("form")[0].reset();
                            }
                        },
                        error: function (error) {
                            console.log(error.responseText);
                        }
                    })
                }else{
                    alert("两次输入密码不一致!")
              }
        ​
          })
        </script>
      • 编辑 users 应用的 views.py 视图文件

        # 注册的视图函数
        def register(request):
            if request.method == "GET":
                return render(request, "register.html")
            elif request.method == "POST":
                # 读取数据
                data = request.POST
                username = data.get("username")
                password = data.get("password")
                code = data.get("code")
                # 数据校验
                if len(username) > 20 or len(username) < 6 or len(password) > 20 or len(password) < 6:
                    return JsonResponse({"status": 400, "msg": "用户名和密码应该为6-20位长度!"})
                if User.objects.filter(username__exact=username):
                    return JsonResponse({"status": 400, "msg": "用户已存在!"})
                if code != "888888":
                    return JsonResponse({"status": 400, "msg": "验证码错误!"})
                User.objects.create(
                    username=username,
                    password=password,
              )
                return JsonResponse({"status": 200, "msg": "用户注册成功!"})
            else:
                return HttpResponseNotAllowed
      • 注册功能调试


http://www.kler.cn/news/362843.html

相关文章:

  • stable-zero123模型构建指南
  • LabVIEW提高开发效率技巧----插入式架构
  • 【MySQL】详解MySQL数据类型
  • Java安全编程:公钥加密和私钥签名的实践指南
  • 技术总结(十一)
  • 删除本地文件不影响Github
  • 【02】RabbitMQ客户端应用开发实战
  • gin入门教程(7): 使用 Logrus + Lumberjack 创建日志中间件
  • 【RabbitMQ】如何在 Ubuntu 安装 RabbitMQ
  • react1816中的setState同步还是异步的深层分析
  • 【p2p、分布式,区块链笔记 Blockchain】truffle002 unleashed_rentable_nft 项目
  • 深入理解 IP 协议
  • 大物 真空中的静电场
  • 微前端之模块联邦架构
  • Linux 中 .bash_history、.bash_logout 等用户配置文件
  • Linux杀毒-KVRT
  • 黑马javaWeb笔记重点备份12:yml格式配置文件
  • visual studio设置修改文件字符集方法
  • MyBatis入门之一对多关联关系(示例)
  • 【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】
  • 【在Linux世界中追寻伟大的One Piece】Socket编程UDP
  • 智慧旅游平台开发微信小程序ssm+论文源码调试讲解
  • Java 开发——(上篇)从零开始搭建后端基础项目 Spring Boot 3 + MybatisPlus
  • Qt开发-----线程调度
  • Python异常检测- 单类支持向量机(One-Class SVM)
  • Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错