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 模块EasyGui详细介绍
Feb 19 Python
python交互式图形编程实例(一)
Nov 17 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python写日志文件操作类与应用示例
Jul 01 Python
Python实现时间序列可视化的方法
Aug 06 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
Python文件读写w+和r+区别解析
Mar 26 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
浅谈Python协程
Jun 17 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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
PHP 高手之路(三)
2006/10/09 PHP
深入php数据采集的详解
2013/06/02 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
PHP输入输出流学习笔记
2015/05/12 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
extjs render 用法介绍
2013/09/11 Javascript
JS创建自定义表格具体实现
2014/02/11 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
学习python 之编写简单乘法运算题
2016/02/27 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
环境工程毕业生自荐信
2013/11/17 职场文书
小学六年级毕业感言
2015/07/30 职场文书
观看《筑梦中国》纪录片心得体会
2016/01/18 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技