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 命令行参数sys.argv
Sep 06 Python
使用python BeautifulSoup库抓取58手机维修信息
Nov 21 Python
Python实现的密码强度检测器示例
Aug 23 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
pandas数值排序的实现实例
Jul 25 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
mysql 字段类型说明
2007/04/27 PHP
php变量作用域的深入解析
2013/06/03 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP多文件上传实例
2015/07/09 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
js选项卡的实现方法
2015/02/09 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
JS实现省市县三级下拉联动
2020/04/10 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python写日志文件操作类与应用示例
2019/07/01 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
在python中用url_for构造URL的方法
2019/07/25 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
一个入门级python爬虫教程详解
2021/01/27 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
中国第一家杂志折扣订阅网:杂志铺
2016/08/30 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
接口可以包含哪些成员
2012/09/30 面试题
我的中国梦演讲稿高中篇
2014/08/19 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android