Flask开启请求异步的两种方式

Flask是单线程运行,如果在某个页面中执行了一些耗时的工作,那么程序就会在这里等待,无法响应其他的请求。也就是说,如果一个路由响应函数中有阻塞代码,那么其他用户无法访问这个web服务器,而且自己也打不开其他页面了。那么如何解决这个问题呢?这里提供两种解决方案第一种方案开启flask线程app.run(host='0.0.0.0', port=5000, debug=False)#改为app.run(host='0.0.0.0', port=5000, debug=Fa...

阅读全文

flask自定义过滤器的两种用法

之前有一篇笔记讲过了过滤器的定义和使用,但是是基于jinja2模板引擎的,可以先看看我过去的笔记:https://sulao.cn/post/551.html其实flask内也带有过滤器,实例对象的过滤器方法是add_template_filter,他的用法有两种我们还是按照大型项目的标准来,在工厂函数中去注册过滤器第一种方式我们现在统一的文件中创建过滤器函数,我的文件命令是filter.py内容如下#!/usr/bin/python3#coding:utf-8__author__ = 'yang.su'i...

阅读全文

flask接收layui复选框提交数据的几种方法

由于前端页面的需求不一样,有些页面使用的layui的数据表格监听传递数据,有些则是使用分页模块自行编写的ajax提交方式,前者通过重载表格种的where条件添加参数来提交到后端进行数据的重新渲染,后者根据ajax写的方式有两种接收方法,真是实践了一下,写法稍有不通,后面传递的参数名也是不一样的1.数据表格的重载方式,我的代码如下,主要是接收id复选框的值htmL代码:<div class="layui-inline" style="width: 300px;">&nbs...

阅读全文

Flaks+layui打造带进度条的文件上传

layui的上传默认是没有添加上传的监听,我们需要在layui的upload.js模块中先添加上传监听事件的句柄找到static\layui\lay\modules下的upload.js文件,为了方便添加代码,我将里面压缩的样式格式化了下,然后添加以下代码xhr:function () {    var newXhr = i.ajaxSettings.xhr();    // 给xhr的upload添加pro...

阅读全文

flask常用的几种钩子函数介绍

flask中具有四种钩子被做成了修饰器,我们在后端可以进行调用做相关的操作.使用钩子函数时,我们需要借助flask的全局变量g,g作为中间变量,在钩子函数和视图函数中间传递数据为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,这种函数就叫做钩子函数(hook)1.before_first_request,flask项目第一次部署后会执行的钩子函数@app.before_first_requestdef bf_first_request():    g.stri...

阅读全文

flask模板继承extends和模板包含include使用方法

我们在制作网页的时候通常有很多公共地方可以单独写入一个文件,然后在其他文件中引用,那么flask中对这种需要反复引用文件的方法有多种多中方案,其中有include,extends这两种1.include使用方式一般都是公共头和尾分开写到header.html和footer.html文件内然后在主体文件中include这两个文件到指定位置即可,例如index.html文件{% include "header.html" %}<div class="warp">...

阅读全文

Flask配置logger模块日志生成到日期生成的文件

Flask自带了logger模块来记录日志,那么我们应用在生产中是需要记录到文件了,为了防止我们生产中所有日志存在一个文件中导致日志文件太大而不方便查找信息,所以我们需要配置下每天生成一个文件独自记录每天的日志情况,主要还是配置应用工厂函数create_app,在原有的基础上添加配置,直接注册到flask中,原有配置请看我之前的笔记https://sulao.cn/post/658.html那么我们来看看如何配置日志到应用工厂#!/usr/bin/python3#coding:utf-8from flask import&n...

阅读全文

Flask工厂函数create_app使用sqlalchemy技巧

flask使用工厂函数注册一些配置参数进去的时候竟然报错了,我的model模块无论怎么样都无法importdb变量,后来把db = SQLAlchemy(app)#改为db = SQLAlchemy()报了一个错误AssertionError: The sqlalchemy extension was not registered to the current application.  ...

阅读全文

Flask中主动抛出异常,统一异常处理

在开发时,后台出现异常,但不想把异常显示给用户或者要统一处理异常时,可以使用abort主动抛出异常,再捕获异常返回美化后的页面。主动抛出异常:@user.route('/testError')def testError():    print ('testError')    abort(404)使用装饰器errorhandler捕获异常:@user.errorhandler(404)def er...

阅读全文

Flask中使用logging模块记录日志

之前有写一个logging模块的使用方法的笔记:https://sulao.cn/post/615.html,其实在flask中也是使用的这个模块,我们一起来看看简单的使用方法#!/usr/bin/python3#coding:utf-8from flask import Flask,requestimport loggingapp = Flask(__name__)@app.route('/')def index(): &nb...

阅读全文