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中的type()方法的使用
May 21 Python
Python之py2exe打包工具详解
Jun 14 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
python GUI实例学习
Nov 21 Python
对numpy中数组转置的求解以及向量内积计算方法
Oct 31 Python
python判断完全平方数的方法
Nov 13 Python
Python3分析处理声音数据的例子
Aug 27 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
python游戏开发的五个案例分享
Mar 09 Python
python实现udp聊天窗口
Mar 31 Python
Pycharm修改python路径过程图解
May 22 Python
PyTorch的torch.cat用法
Jun 28 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小马小结(方便查找后门的朋友)
2012/05/05 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
php中动态变量用法实例
2015/06/10 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
PHP时间类完整代码实例
2021/02/26 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript判断数组是否包含指定元素的方法
2015/07/01 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
vue 里面使用axios 和封装的示例代码
2017/09/01 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
Python中__name__的使用实例
2015/04/14 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
用Python开发app后端有优势吗
2020/06/29 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
Python下载网易云歌单歌曲的示例代码
2020/08/12 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
python上下文管理的使用场景实例讲解
2021/03/03 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
构造方法和其他方法的区别?怎么调用父类的构造方法
2013/09/22 面试题
销售演讲稿范文
2014/01/08 职场文书
法人代表身份证明书及授权委托书
2014/09/16 职场文书
财务工作失职检讨书
2014/11/21 职场文书
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python