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垃圾回收机制
Feb 12 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
python调用API实现智能回复机器人
Apr 10 Python
IntelliJ IDEA安装运行python插件方法
Dec 10 Python
python实现顺时针打印矩阵
Mar 02 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
Python面向对象封装操作案例详解
Dec 31 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python爬虫中PhantomJS加载页面的实例方法
Nov 12 Python
python tkinter实现连连看游戏
Nov 16 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
Apr 27 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中memcache 基本操作实例
2015/05/17 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
jQuery 动画弹出窗体支持多种展现方式
2010/04/29 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
bootstrap table表格使用方法详解
2017/04/26 Javascript
使用webpack-dev-server处理跨域请求的方法
2018/04/18 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
js实现表格数据搜索
2020/08/09 Javascript
深入理解Python 代码优化详解
2014/10/27 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
python中lambda()的用法
2017/11/16 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
windows下python和pip安装教程
2018/05/25 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
Python sys模块常用方法解析
2020/02/20 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
春节活动策划方案
2014/01/24 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
工作自我推荐信范文
2015/03/25 职场文书
关于golang高并发的实现与注意事项说明
2021/05/08 Golang