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 open读写文件实现脚本
Sep 06 Python
用Python输出一个杨辉三角的例子
Jun 13 Python
Python的Django框架中的URL配置与松耦合
Jul 15 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Pycharm学习教程(5) Python快捷键相关设置
May 03 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
Python 中的lambda函数介绍
Oct 10 Python
Python pathlib模块使用方法及实例解析
Oct 05 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
Python预测分词的实现
Jun 18 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中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
php jsonp单引号转义
2014/11/23 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
Firebug入门指南(Firefox浏览器)
2010/08/21 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
利用ECharts.js画K线图的方法示例
2018/01/10 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
2020/08/11 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python gdal安装与简单使用
2019/08/01 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Python发送邮件实现基础解析
2020/08/14 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
新闻专业应届生求职信
2013/10/31 职场文书
毕业生自我鉴定
2013/11/05 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
利用 Python 的 Pandas和 NumPy 库来清理数据
2022/04/13 Python