Bootstrap实现登录校验表单(带验证码)

实现Bootstrap登录校验表单(带验证码)需要遵循以下步骤:

1. 引入Bootstrap和jQuery库

在标签内引入Bootstrap和jQuery库:

<head>
  <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
  <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>

2. 编写HTML结构

在标签内编写HTML结构,并给表单、输入框、按钮等元素设定ID和样式:

<body>
  <div class="container">
    <h2>登录</h2>
    <form class="form-horizontal" id="login-form">
      <div class="form-group">
        <label class="control-label col-sm-2" for="username">用户名:</label>
        <div class="col-sm-10">
          <input type="text" class="form-control" id="username" placeholder="请输入用户名">
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="password">密码:</label>
        <div class="col-sm-10">
          <input type="password" class="form-control" id="password" placeholder="请输入密码">
        </div>
      </div>
      <div class="form-group">
        <label class="control-label col-sm-2" for="captcha">验证码:</label>
        <div class="col-sm-7">
          <input type="text" class="form-control" id="captcha" placeholder="请输入验证码">
        </div>
        <div class="col-sm-3">
          <img id="captcha_img" src="#" alt="">
          <a href="#" id="change_captcha">看不清?换一张</a>
        </div>
      </div>
      <div class="form-group"> 
        <div class="col-sm-offset-2 col-sm-10">
          <button type="submit" class="btn btn-primary">登录</button>
        </div>
      </div>
    </form>
  </div>
</body>

其中,用户名输入框的ID为"username",密码输入框的ID为"password",验证码输入框的ID为"captcha",验证码图片的ID为"captcha_img",更换验证码的a标签的ID为"change_captcha"。

3. 编写JavaScript代码

使用jQuery编写JS代码,监听表单的提交事件,通过Ajax请求向后端发送数据并接收返回值:

<script>
$(function(){
  // 更换验证码的点击事件
  $('#change_captcha').click(function(){
    var captcha_src = '/api/captcha?' + Math.random(); // 后端API接口生成验证码
    $('#captcha_img').attr('src', captcha_src);
  });

  // 登录表单的提交事件
  $('#login-form').submit(function(){
    var username = $('#username').val();
    var password = $('#password').val();
    var captcha = $('#captcha').val();
    $.ajax({
      url:'/api/login',
      type:'POST',
      data:{'username':username, 'password':password, 'captcha':captcha},
      dataType:'json',
      success:function(data){
        if(data.code == 0){
          alert('登陆成功!');
          window.location.href = '/index.html'; // 登录成功后跳转
        }else{
          alert('登录失败:' + data.msg);
          var captcha_src = '/api/captcha?' + Math.random(); // 登录失败后更换验证码
          $('#captcha_img').attr('src', captcha_src);
        }
      },
      error:function(){
        alert('登录失败:网络错误!');
      }
    });
    return false; // 防止表单自动跳转
  });
});
</script>

其中,更换验证码的a标签和后端API接口的地址需要根据自己的需求进行修改。此代码通过jQuery中的$.ajax()方法完成向后端发送数据的操作,其中url参数为后端接口地址,type参数为请求类型,data参数为请求所需要携带的数据,dataType参数为返回数据的类型,success参数为请求成功后的回调函数,error参数为请求失败后的回调函数。

4. 编写后端接口

前端代码已完成,我们需要在后端实现登录的校验逻辑。以下是Django框架的一段示例代码:

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import random

# 随机生成4位验证码
def generate_captcha():
    captcha = ''
    for i in range(4):
        captcha += str(random.randint(0, 9))
    return captcha

# 获取验证码图片的接口
def get_captcha(request):
    captcha = generate_captcha()
    request.session['captcha'] = captcha
    return JsonResponse({'captcha': captcha})

# 登录校验的接口
@csrf_exempt
def user_login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        captcha = request.POST.get('captcha')
        session_captcha = request.session.get('captcha')
        if captcha.lower() == session_captcha.lower():
            # 验证码正确,进行用户名密码的校验
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                return JsonResponse({'code': 0, 'msg': '登陆成功!'})
            else:
                return JsonResponse({'code': 1, 'msg': '用户名或密码错误,请重新输入!'})
        else:
            return JsonResponse({'code': 2, 'msg': '验证码错误,请重新输入!'})

其中,generate_captcha()函数用于随机生成4位验证码,并将其存储在session中,get_captcha()函数用于生成验证码图片的接口,user_login()函数用于实现登录校验的接口,其中使用Django内置的User模型进行用户名密码的校验,则需要在视图函数中进行导包,即from django.contrib.auth import authenticate, login。

总的来说,Bootstrap实现登录校验表单(带验证码)需要借助jQuery和后端代码的支持,需要在前端完成HTML结构和JS代码的编写,后端完成验证码和登录校验的逻辑实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Bootstrap实现登录校验表单(带验证码) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Nginx负载均衡详细介绍

    Nginx是一款轻量级的高性能Web服务器和反向代理服务器,它被广泛应用于高并发的Web应用领域。Nginx具有负载均衡的特性,可以将客户端请求平均分配到多个Web服务器,从而提高系统的并发处理能力和稳定性。本文将介绍Nginx负载均衡的使用方法和常见配置方案。 负载均衡方法 Nginx支持多种负载均衡方法,包括轮询、IP Hash、最小连接数、URL Ha…

    人工智能概览 2023年5月25日
    00
  • windows支持哪个版本的python

    当前Windows主流版本均可以支持Python的安装和使用。需要注意的是,不同版本的Python可能需要不同的系统环境才能正常运行。下面是具体步骤和示例说明。 Windows支持哪个版本的Python Windows可以支持从Python2.0开始的所有Python版本。但是Python2.x已经被官方宣布不再维护,推荐使用Python3.x版本。以下是目…

    人工智能概览 2023年5月25日
    00
  • Ubuntu 搭建LNMP环境图文教程 安装Nginx服务器

    Ubuntu 搭建 LNMP 环境图文教程 前言 LNMP是使用Linux+Nginx+MySQL+PHP构建的Web开发环境。Ubuntu是一个广泛使用的Linux操作系统。搭建LNMP环境在开发Web应用中非常常见。本文将介绍如何在Ubuntu中搭建LNMP环境,并安装Nginx服务器。 准备工作 在开始搭建环境之前,需要确保系统需要更新到最新的软件版本…

    人工智能概览 2023年5月25日
    00
  • cv2.imread 和 cv2.imdecode 用法及区别

    cv2.imread与cv2.imdecode都是OpenCV提供的图像读取函数。它们的作用是用于读取图像文件以获取图像数据,但是它们之间存在一些区别。 cv2.imread cv2.imread函数用于读取常见的图像格式,如 BMP、JPEG、PNG、PBM、PGM、PPM 和 TIFF 格式的图像。当使用cv2.imread函数读取图像时,函数的返回值是…

    人工智能概论 2023年5月25日
    00
  • Django url 路由匹配过程详解

    当一个用户请求一个URL时,Django会使用一个叫做URLconf的机制来决定如何处理这个请求。URLconf是一系列模式与响应函数之间的映射。当Django收到一个请求后,它会从URLconf的最上层开始,依次尝试匹配每个url pattern,直到找到一个符合请求的pattern为止。当一个match被找到后,Django就会调用与这个pattern相…

    人工智能概览 2023年5月25日
    00
  • Node.js对MongoDB数据库实现模糊查询的方法

    以下是“Node.js对MongoDB数据库实现模糊查询的方法”的完整攻略。 前置知识 在继续了解如何在Node.js中实现MongoDB数据库的模糊查询前,需要具备以下前置知识: Node.js基础知识; MongoDB数据库基础知识; Node.js中使用MongoDB数据库的基础知识。 如果您还不熟悉以上内容,在进行本文攻略前,请先自学这些基础知识。 …

    人工智能概论 2023年5月25日
    00
  • Spring Cloud 的 Hystrix.功能及实践详解

    Spring Cloud 的 Hystrix 功能及实践详解 1. Hystrix 是什么 Hystrix 是 Netflix 推出的一款容错框架,它能够保证整个系统的稳定性和弹性。Hystrix 可以组织网络服务下游的级联失败(熔断),保护上游服务不被连锁反应的故障击垮。同时,Hystrix 也是一款容错工具,可以帮助应用程序处理各种故障的情况。 2. H…

    人工智能概览 2023年5月25日
    00
  • 安装Ubuntu20.04与安装NVIDIA驱动的教程

    下面是安装Ubuntu 20.04和安装NVIDIA驱动的教程。 安装Ubuntu 20.04 下载Ubuntu 20.04的镜像 在官网上下载Ubuntu 20.04的镜像文件,可以是Desktop或Server版本。下载地址:https://ubuntu.com/download 制作U盘启动盘 使用制作启动盘工具将Ubuntu 20.04镜像写入U盘中…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部