Flask使用Bootstrap模板并引入Ajax后台完成数据刷新

基于Python Flask框架+jquery Ajax技术实现的增删改查(CRUD)+Ajax的异步文件上传 1 阅读详情
Python 与 Bootstrap

这周申请了公众号[ 清风Python ],并勉强算是踏入了公众号的第一步。
虽然公众号是Python相关的,但起初的三天,都是在更新Bootstrap的相关文章,有些驴唇不对马嘴。朋友说是不公众号取错名字了,应该叫清风Web?其实不然...
之所以最近在学习Bootstrap,主要是因为Flask的后端知识学习的差不多了,也写了些简单的网页功能。可前台样式一直是短板。所以想学学Bootstrap,用比较少的时间,使前台美观效果有所提升。
但Bootstrap系列一直这么更新下去,估计真的偏离学习Python的初衷了。所以今天针对Flask和Bootstrap更新一篇文章吧

Flask 表单登陆

Flask针对请求的get、post分类,完成模板渲染与表单验证,算是最为基础的功能了,实现思路如下:

  • 如果为get请求,return render_template('login.html)
  • 如果为post请求,获取请求参数中的user pwd
    • 用户名密码验证成功,跳转登陆页面
    • 用户名密码验证不成功,重新渲染login.html并给出提示

好的,在我们写python之前,先写login.html。既然这几天在学bootstrap,那就从它入手

Bootstrap sign in

Bootstrap网站有很多实例精选,其中就有这么一个sign in的模板,今天就改改它。
首先登陆Bootstrap中文网http://www.bootcss.com/ ,选择较为稳定的bootstrap3,进入到模板实例中,下载整套代码。

5847426-e9777e3364c22ac2.gif
模板下载.gif

解压代码后,将../bootstrap-3.3.7/docs/examples/signin/index.html文件及依赖的css文件拷贝至Flask模板路径下,并使用jinjia2模板规则,修改html代码。(bootstrap为了继承ie低版本,所以添加了很多兼容性的js,完全没必要考虑,直接删除掉。保留并修改bootstrap.min.css、signin.css两个css文件的引入路径,即可完美支持)。
默认模板是email登录的,我们修改为用户名,并为用户名、密码添加name字段,用于获取表单提交后的用户名密码,进行登录验证。最终修改如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Flask Login Test</title>

    <!-- Bootstrap core CSS -->
    <link href="{{ url_for('static',filename='bootstrap.min.css') }}" rel="stylesheet">

    <!-- Custom styles for this template -->
    <link href="{{ url_for('static',filename='signin.css') }}" rel="stylesheet">

</head>

<body>

<div class="container" >

    <form class="form-signin" method="post">
        <h2 class="form-signin-heading">Please sign in</h2>
        <label for="inputName" class="sr-only">Email address</label>
        <input type="text" id="inputName" class="form-control" placeholder="user" name="user" required autofocus>
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" name="pwd" placeholder="Password" required>
        <div class="checkbox">
            <label>
                <input type="checkbox" value="remember-me"> Remember me
            </label>
        </div>
        {% if error %}
            <p class="text-danger">{{ error }}</p>
        {% endif %}
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
    </form>

</div>
</body>
</html>

下来需要编写Flask的Login,为了快速演示效果,就不引入插件和数据库判断了,使用写死用户名密码的方式进行登录验证。

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/6/2 20:59
# @Software : PyCharm
# @version  :Python 3.6.8
# @File     : basic_login.py

from flask import Flask, render_template, request, session, redirect, url_for

app = Flask(__name__)
app.config["SECRET_KEY"] = "Can't not guess it ."

@app.before_request
def check():
    if (not session.get('user') and not request.path.startswith('/static')
            and request.path != '/login'):
        return redirect(url_for('login'))

@app.errorhandler(404)
def error(error_no):
    return "您访问的路径不存在..."



@app.route('/home')
def home():
    return "<h2>欢迎访问系统主页</h2>"


@app.route('/login', methods=["GET", "POST"])
def login():
    if request.method == "GET":
        return render_template('index.html')
    else:
        user = request.form.get('user')
        pwd = request.form.get('pwd')
        if user == 'qingfeng' and pwd == '123':
            session['user'] = user
            return redirect(url_for('home'))
        else:
            return render_template('index.html', error="用户名或密码错误")


if __name__ == '__main__':
    app.run(debug=True)

启动服务登录验证,由于设置了before_request的验证,所以输入http://127.0.0.1:5000/后,会自动跳转至登录界面。可以看到引入的模板正常展示了。之后输入用户名密码,进行登录验证。

5847426-bd622eb9ba3e0d9e.gif
登陆验证.gif

基本的Flask登陆验证就是这样了。但这种用户名密码错误后,重新渲染刷新页面的方式,会丢失当前输入的内容,并且二次渲染造成了不必要的流量,能否针对此处进行优化呢?答案是当然的..

Flask 引入 Ajax后台刷新数据

为了系统不二次渲染网页,我们可以使用Ajax进行后台数据刷新。方便起见我们引入JQuery的Ajax,对比原生js可以省去不少代码...

<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
    $(function () {
        $("#submit").click(function (event) {
            event.preventDefault();
            var userInput = $('input[name="user"]');
            var user = userInput.val();
            var pwdInput = $("input[name='pwd']");
            var pwd = pwdInput.val();
            $.post({
                'url': '/login',
                'data': {
                    'user': user,
                    'pwd': pwd
                },
                "success": function (data) {
                    if (data['code'] == 200) {
                        window.location = '/home'
                    } else {
                        var error = data['error'];
                        $("#error").html(error);
                        $("#error").show();
                    }
                },
                'fail': function (error) {
                    consle.log(error)
                }
            });
        });
    });
</script>

之后将前面用于显示错误的error标签转化为:<p class="text-danger" style="display:none" id="error"></p>
至于Flask中的代码,只需要将原有的模板渲染,改为json数据传输即可:

from flask import jsonify
if user == 'qingfeng' and pwd == '123':
        session['user'] = user
        return jsonify({"code": 200, "error": ""})
    else:
        return jsonify({"code": 401, "error": "用户名或密码错误"})
5847426-e9fc84e24a755760.gif
AJAX登陆验证.gif

通过打开F12,看到请求并未进行页面的二次渲染,这样避免了清空用户之前的输入数据,而是通过后台数据刷新完成。

完整代码上传在GitHub:https://github.com/KingUranus/FlaskTests

好了,今天的内容就到这里,如果觉得有帮助,记得点赞支持。欢迎大家关注我的公众号,获取更多Python相关的知识,并有整理好的各类福利数据供大家下载:


5847426-dbd743c1d0dd69d5.jpg
清风Python.jpg

©本文由简书作者:清风Python 原创 如需转载请注明

Flask MVVM 开发(vue.js),Javascript 处理时间 解决 Jinja2冲突 http://panmax.love/2016/%E8%A7%A3%E5%86%B3jinja2%E4%B8%8EVue-js%E7%9A%84%E6%A8%A1%E6%9D%BF%E5%86%B2%E7%AA%81/ 12 app.jinja_env.variable_start_string = '{{ 'app.jinja_env 阅读详情

相关推荐

FlaskCRUD应用开发实战:结合Flask和Bootstrap

本文还有配套的精品资源,点击获取 简介:FlaskCRUD是一个使用Python语言和Flask Web框架,结合Bootstrap前端库构建的CRUD应用程序。该教程旨在指导用户如何利用Flask的灵活性快速搭建Web应用,并使用Bootstrap来改善用户体验。内容涵盖Flask的基础知识、Bootstrap的功能介绍、CRUD操作的实现、Python 3编程基础、应用...

weixin_30356433的博客 2523

bootstrap tab切换后,刷新 页面 回到被选中的tab页签

描述:当使用bootstrap 的tab 进行页面切换后,一刷新页面,又回到了第一个初始页,从而又得重新切换,实现目标:例如当前切换到第三个页面后,刷新页面自动定位到第三个tab页面中。

秋风伴落叶 1030

bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法

异步请求          var postData = { "env_name" : new_env_name, "env_url": new_env_url, "env_desc" : new_env_desc }; $.ajax({ type: 'POST', url : '/test_env_add/', data : postData, dataType : 'json', success : function(data){ $('#table_test_env').dataTable().fnC

url链接(url_for)与加载静态文件(static文件夹下的js、css、image)

url链接和加载静态文件 url链接: 1、语法:url_for('static',filename='路径') 2、静态文件,flask会从static文件夹中开始寻找,所以不需要再写static这个路径 3、可以加载CSS/js/image 静态文件 &lt;link rel="stylesheet" href="{{url_for('static',filename='css/ind...

qq_39974381的博客 1万+

STM32G0定时器中断实战:HAL库配置TIM2实现精准1秒LED闪烁(附完整代码)

本文深入解析了STM32G0系列微控制器中定时器中断的配置与应用,重点介绍了如何使用HAL库配置TIM2实现精准的1秒LED闪烁。通过详细讲解时钟树分析、预分频系数与自动重装载寄存器的计算原理,并结合CubeMX图形化配置与完整代码示例,帮助开发者从底层理解定时器工作机制,掌握可复用的工程化配置方法。

weixin_29194817的博客 253

AD服务器搭建

一、角色安装1)打开服务器管理器,添加 角色和功能;2) 点 下一步;3)点 下一步;4)点 下一步;5)点击安装;6-1)将此服务器提升为域控制器;6-2)点下一步;6)输入密码 点 下一步;7)自动生成LIXF,点击下一步;8)确认目录,点下一步;8)确认安装条件,点安装; 8)安装成功,点关闭;...

潇峰的博客 6451

html(css、js、html、web)文件引用路径写法【flask】

1.常见的本地静态引入本地的css,js文件: 比如文件路径:static/css/pintuer.css,那么路径应该这样写 <link rel="stylesheet" href="{{ url_for('static',filename ='css/pintuer.css') }}"> 2.网上css、js文件 3.本地templates模板引用 3.内嵌的js代码中对templates模板的引用 4.js文件中对templates模板的引用 ...

cold的博客 4198

DSP(数字信号处理器)技术概要

数字信号处理器(digital signal processor,DSP)是一种用于数字信号处理的可编程微处理器,它的诞生与快速发展,使各种数字信号处理算送得以实时实现,为数字信号处理的研究和应用打开了新局面,提供了低成本的实际工作环境和应用平台,推动了新的理论和应用领域的发展。目前,DSP技术在通信、航空、航天。雷达、工业控制、医疗、网络及家用电器等各个领域都得到了广泛应用。 1.1 DSP系统和芯片的结构特点1.1.1 DSP系统的基本结构通过传感数将非电物理量转换为模拟电信号,预处理一般包括放大器和滤

m0_46582485的博客 2万+

Flask 中使用 AJAX 异步加载 Bootstrap 表格(Tables)

Flask 中使用 AJAX 异步加载 Bootstrap 表格(Tables)1、快速安装2、一步一步做3、概述4、项目结构4.1 Python 部分app.py4.2 HTML 部分index.html4.3 Styling 部分main.css4.4 JSON 部分data_set_1.jsondata_set_2.json4.5、AJAX 部分ajax_table_example.js 本文向您展示如何设置 Flask Web 应用程序,将 JSON 对象加载到 HTML 表中。 它还通过向 Fla

藕丝空间 1898

PaddleOCR 与 PaddleX 调试

本文介绍了PaddleOCR与PaddleX的安装调试过程及应用对比。首先详细说明了环境准备步骤,包括安装ccache、设置环境变量及创建conda虚拟环境,提供了精简安装和源码安装两种方式。接着展示了使用PaddleOCR进行发票和手写汉字识别的测试结果,指出部分手写识别存在误差。随后对比了两者的差异:PaddleOCR专注于OCR算法优化,PaddleX则提供全流程工具链和标准化部署方案。最后演示了如何通过PaddleX部署OCR服务,包括API启动方法和客户端调用示例,为开发者提供了两种不同场景下的O

weixin_42176639的博客 1452

Hive中的四种排序方式(order by,sort by,distribute by,cluster by)使用与区别详解

在平时的Hive数仓开发工作中经常会用到排序,而Hive中支持的排序方式有四种,这里结合具体的案例详细介绍一下他们的使用与区别: order by sort by distribute by cluster by 一、order by(全局排序) 1、作用:全局排序,只有一个reducer。 order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序),也正因为只有一个reducer,所以当输入的数据规模较大时会导致计算时间较长。   set hive.mapr

weixin_43230682的博客 1万+

Flask+Bootstrap4案例[有源码]

​ Flask是一个非常小的PythonWeb框架,被称为微型框架;只提供了一个稳健的核心,其他功能全部是通过扩展实现的;意思就是我们可以根据项目的需要量身定制,也意味着我们需要学习各种扩展库的使用。​ 异步 JavaScript 和 XML,或 Ajax 本身不是一种技术,而是一种将一些现有技术结合起来使用的方法,包括:HTML 或 XHTML、CSS、JavaScript、DOM、XML、XSLT、以及最重要的 XMLHttpRequest 对象。

qq_41631913的博客 2514

使用Open3D进行RGB-D图像点云处理

在本文中,我们将使用Open3D来处理RGB-D图像,提取点云并进行一些基本的操作。总结起来,本文介绍了如何使用Open3D库处理RGB-D图像并提取点云。我们展示了如何读取RGB-D图像,创建RGB-D图像和点云,并显示点云。除了显示点云,Open3D还提供了许多其他功能,如点云滤波、点云配准、表面重建等。在创建RGB-D图像时,我们需要指定深度图像的缩放因子和截断值,以及是否将RGB图像转换为强度图像。希望本文能够帮助您入门Open3D,并在处理RGB-D图像和点云数据时提供一些指导。

QfcaLinux的博客 445

AJAX BootStrap Vue

AJAX 前端向后端请求的工具, 跟后端服务器进行交互的 BootStrap 对CSS的封装 Vue基础 前后端进行分离 来写前端项目的 flask pip install flask from flask import Flask fls = Flask(__name__) print(fls.config) fls.config["ENV"] = "development" ...

weixin_40354992的博客 252

YOLO26科研升级:OREPA在线重参数化,让模型精度在训练中持续跃升

在目录下,新建AddModules文件夹,将orepa.py放入其中。

LXY_LOVE36的博客 98

超级全的PCB LAYOUT高速信号走线指南——简化应用版

在PCB Layout中,几乎涵盖了所有的高速信号走线指南。包括了TF/SD、HDMI、LVDS、DVP、eDP、MIPI、USB2.0、USB3.0、MAC、BT.1120、PCIE高速信号等等。此版本为简化版。

bhxc809751502的博客 8549

Flask+Bootstrap构建随机人设生成器:从零到部署的Web开发实践

Web开发的核心在于将创意转化为可交互的应用,其中后端逻辑与前端展示的协同是关键。通过Python的Flask框架,开发者可以快速构建RESTful API,实现数据生成与处理;结合Bootstrap前端库,能够高效创建响应式、美观的用户界面。这种技术组合在构建轻量级、趣味性应用时尤其高效,例如随机内容生成器、工具类小程序等。本文以“随机人设生成器”为例,详细演示了如何利用Flask处理随机算法与API设计,并通过Bootstrap实现动态数据展示与用户交互,最终完成一个完整、可部署的Web应用项目。

327

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

bootstrap的Modal使用,flask+python+bootstrap

flask之前用过,不过前端点框架没用过bootstrap,第一次使用终于通了。 期间好多地方不知道怎么写,使用bootstrap提供点模板还是要修改一些东西才能够用。 遇到的问题: 点击提交按钮没有反应 提交后,在flask中request.form为空 flask js文件引用静态文件问题 使用的模板:bootstrap的Modal 这是bootstrap官网提供的modal模板 <button type="button" class="btn btn-primary" data-toggle

Neon Light 的博客 1224

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

flask读取数据库(mysql)并展示表格(讲解获取表头的方法)【附上flask好看点的helloworld】

简述 为了网页的好看,最好还是用bootstrap 文章目录简述好看点的helloworld链接数据库结合在html上和flask上html代码修改 好看点的helloworld anyway,先看初始版本的 helloworld /template/index.html 来自于bootstrap官网 &lt;!doctype html&gt; &lt;html lang="en"&gt; ...

gc.collect() 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python bootstrap 文件上传_使用 Flask-Uploads + jQuery + Bootstrap 创建带进度条的文件上传...

Flask-Uploads allows your application to flexibly and efficiently handle file uploading and serving the uploaded files. You can create different sets of uploads - one for document attachments, one for...

weixin_39980903的博客 668

bootstrap android,了解--Android Bootstrap模板

Bootstrap的HTML标准模板Hello, world!第一款:SB Admin 2官方:http://startbootstrap.com/template-overviews/sb-admin-2/第二款:Admin Lite官网:https://shapebootstrap.net/items/category/html-templates/11-admin-templates第三款:...

weixin_42497772的博客 483

ajax将数据显示在class为content的标签中_flask 项目中使用 bootstrapFileInput(基础篇)...

bootstrap 为 flask 使用人员提供了一个非常优美且有效的前端页面组件,但是完美之处还存在些许缺陷,比如文件的上传功能.而 bootstrap-fileinput 是基于 bootstrap 的控件,非常完美的填补了这个空缺.注意: 本文是基于 bootstrap-fileinput v4.4.2. github 地址: https://github.com/kartik-v/boot...

weixin_36485371的博客 170

利用Bootstrap+Vue+Flask 制作一个todolist

利用Bootstrap+Vue+Flask,快速完成一个包含前后端的todolist应用。

crazy_banana的博客 7334

Flask应用开发综合示例——在线投票系统

下面是一个与前面不同的综合示例,展示如何使用开发一个简单的。用户可以创建投票、参与投票并查看投票结果。

Flask Web 1110
上一篇: Bootstrap学习笔记3--图片样式
下一篇: 使用Flask制作美观的网页日历
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值