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中使用urllib2伪造HTTP报头的2个方法
Jul 07 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
微信跳一跳python辅助软件思路及图像识别源码解析
Jan 04 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
python实现在一个画布上画多个子图
Jan 19 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
基于python实现操作git过程代码解析
Jul 27 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
python 爬虫之selenium可视化爬虫的实现
Dec 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
浅谈php的优缺点
2015/07/14 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
python查找第k小元素代码分享
2013/12/18 Python
python实现音乐下载器
2018/04/15 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Django Rest framework之权限的实现示例
2018/12/17 Python
django的ORM操作 增加和查询
2019/07/26 Python
Pandas 缺失数据处理的实现
2019/11/04 Python
Python dict的常用方法示例代码
2020/06/23 Python
详细分析Python collections工具库
2020/07/16 Python
python实现数字炸弹游戏程序
2020/07/17 Python
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
初中体育教学反思
2014/01/14 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
硕士学位申请报告
2015/05/15 职场文书