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 相关文章推荐
详细解读tornado协程(coroutine)原理
Jan 15 Python
Django csrf 验证问题的实现
Oct 09 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Python搭建Keras CNN模型破解网站验证码的实现
Apr 07 Python
Python内存映射文件读写方式
Apr 24 Python
Python urllib.request对象案例解析
May 11 Python
Python 生成短8位唯一id实战教程
Jan 13 Python
Python中的min及返回最小值索引的操作
May 10 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 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建立外键
2006/11/25 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
javascript实现的listview效果
2007/04/28 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
Python获取当前函数名称方法实例分享
2018/01/18 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
python 实现简易的记事本
2020/11/30 Python
python3字符串输出常见面试题总结
2020/12/01 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
新闻记者个人求职的自我评价
2013/11/28 职场文书
环保建议书300字
2014/05/14 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
授权委托书怎么写
2014/09/25 职场文书
预备党员半年考察意见
2015/06/01 职场文书
董事长秘书工作总结
2015/08/14 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers