Python Flask框架扩展操作示例


Posted in Python onMay 03, 2019

本文实例讲述了Python Flask框架扩展操作。分享给大家供大家参考,具体如下:

请求上下文(request context)

Flask有两大核心:Werkzeug和Jinja2。Werkzeug实现路由、调试和Web服务器网关接口。Jinja2实现了模板。

request和response都属于请求上下文对象。
当调用app = Flask(name)的时候,创建了程序应用对象app;
request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
app的生命周期大于request,一个app存活期间,可能发生多次http请求,所以就会有多个request。
最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。

Flask装饰器路由的实现:

Flask框架是以Werkzeug为基础实现的。

Werkzeug是一个遵循WSGI协议的python函数库。其内部实现了很多Web框架底层的东西,比如request和response对象;与WSGI规范的兼容;支持Unicode;支持基本的会话管理和签名Cookie;集成URL请求路由等。

Werkzeug库的routing模块负责实现URL解析。不同的URL对应不同的视图函数,routing模块会对请求信息的URL进行解析,匹配到URL对应的视图函数,以此生成一个响应信息。

routing模块内部有Rule类(用来构造不同的URL模式的对象)、Map类(存储所有的URL规则)、MapAdapter类(负责具体URL匹配的工作);

Flask-Script扩展命令行

通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python hello.py runserver ?host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在计算机发起的连接,即localhost连接。

我们可以通过python hello.py runserver ?help来查看参数。

from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route('/')
def index():
  return '床前明月光'
if __name__ == "__main__":
  manager.run()

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
Python创建模块及模块导入的方法
May 27 Python
python检查序列seq是否含有aset中项的方法
Jun 30 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
PyQt5实现下载进度条效果
Apr 19 Python
用pyqt5 给按钮设置图标和css样式的方法
Jun 24 Python
Python 3 判断2个字典相同
Aug 06 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
Python 使用Opencv实现目标检测与识别的示例代码
Sep 08 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
Python安装Flask环境及简单应用示例
May 03 #Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 #Python
Python3模拟curl发送post请求操作示例
May 03 #Python
零基础使用Python读写处理Excel表格的方法
May 02 #Python
Python TestCase中的断言方法介绍
May 02 #Python
Python3中的bytes和str类型详解
May 02 #Python
利用pyinstaller打包exe文件的基本教程
May 02 #Python
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
IE8 原生JSON支持
2009/04/13 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
2019/10/26 Javascript
如何用vue-cli3脚手架搭建一个基于ts的基础脚手架的方法
2019/12/12 Javascript
js实现简单的倒计时
2021/01/28 Javascript
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Python: 传递列表副本方式
2019/12/19 Python
python range实例用法分享
2020/02/06 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
Python 中Operator模块的使用
2021/01/30 Python
英国最大的百货公司:Harrods
2016/08/18 全球购物
课改先进个人汇报材料
2014/01/26 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
2015年端午节活动总结
2015/02/11 职场文书
涨价通知怎么写
2015/04/23 职场文书
保护校园环境倡议书
2015/04/28 职场文书
Python数据可视化之绘制柱状图和条形图
2021/05/25 Python
Python实现byte转integer
2021/06/03 Python