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字典多条件排序方法实例
Jun 30 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
Tornado 多进程实现分析详解
Jan 12 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
Python命令行click参数用法解析
Dec 19 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
Python实现七个基本算法的实例代码
Oct 08 Python
Python编写万花尺图案实例
Jan 03 Python
python time.strptime格式化实例详解
Feb 03 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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
dedecms集成财付通支付接口
2014/12/28 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
JS回调函数基本定义与用法实例分析
2017/05/24 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
js+canvas实现画板功能
2020/09/13 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
用Python写王者荣耀刷金币脚本
2017/12/21 Python
详解通过API管理或定制开发ECS实例
2018/09/30 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
遥感技术与仪器求职信
2014/02/22 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
2014年商场工作总结
2014/11/22 职场文书
2015年食品安全工作总结
2015/05/15 职场文书
活动新闻稿范文
2015/07/17 职场文书
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB