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创建XML文档
Mar 01 Python
python生成日历实例解析
Aug 21 Python
利用Python实现图书超期提醒
Aug 02 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
Python星号*与**用法分析
Feb 02 Python
python通过伪装头部数据抵抗反爬虫的实例
May 07 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python3使用QQ邮箱发送邮件
May 20 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
使用Python发现隐藏的wifi
Mar 04 Python
Django返回HTML文件的实现方法
Sep 17 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+Html+缓存
2006/11/25 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
jquery将一个表单序列化为一个对象的方法
2014/01/03 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
详解vue项目中如何引入全局sass/less变量、function、mixin
2018/06/02 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python的Flask框架的简介和安装方法
2015/11/13 Python
python实现网站的模拟登录
2016/01/04 Python
python中的编码知识整理汇总
2016/01/26 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
sort命令的作用和用法
2013/08/25 面试题
银行求职信个人范文
2013/12/16 职场文书
跟单文员岗位职责
2014/01/03 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
2014年宣传工作总结
2014/11/18 职场文书
平安建设汇报材料
2014/12/29 职场文书
个人年度总结报告
2015/03/09 职场文书
工地食品安全责任书
2015/05/09 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python
Django使用channels + websocket打造在线聊天室
2021/05/20 Python
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android