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判断字符串是否纯数字的方法
Nov 19 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
浅析Python中return和finally共同挖的坑
Aug 18 Python
python交互式图形编程实例(二)
Nov 17 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
使用pycharm生成代码模板的实例
May 23 Python
numpy中的ndarray方法和属性详解
May 27 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
PyTorch笔记之scatter()函数的使用
Feb 12 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
Apr 08 Python
pytorch使用horovod多gpu训练的实现
Sep 09 Python
Pycharm自带Git实现版本管理的方法步骤
Sep 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
2017/03/13 PHP
jQuery插件开发基础简单介绍
2013/01/07 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
javascript框架设计之浏览器的嗅探和特征侦测
2015/06/23 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
Python实现视频下载功能
2017/03/14 Python
python实现数据写入excel表格
2018/03/25 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
python制作朋友圈九宫格图片
2019/11/03 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
网络教育自我鉴定
2014/02/04 职场文书
《争吵》教学反思
2014/02/15 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
给校长的建议书500字
2014/05/15 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书