Flask框架响应、调度方法和蓝图操作实例分析


Posted in Python onJuly 24, 2018

本文实例讲述了Flask框架响应、调度方法和蓝图操作。分享给大家供大家参考,具体如下:

响应

像现在大部分的互联网应用用的数据传输格式都是JSON,当用户访问一个URL,我们如何通过Flask返回JSON的响应:

普通做法:

@app.route("/")
def showInfo():
  return jsonify({"name":"老王","age":18})

当我们的应用有大量的URL时,我们需要每次都用jsonify转换一下,不免觉得繁琐。此时会有人说,可以定义一个公共方法,将转换都在这个方法中实现就好了。这也不失为一个可行的方法,还有一种方法让Flask自动帮我们做这些工作:

from flask import Response,jsonify
class JSONResponse(Response):
  @classmethod
  def force_type(cls,response,environ=None):
    if isinstance(response,dict):
      response = jsonify(response)
    return super(JSONResponse,cls).force_type(response,environ)
app.response_class = JSONResponse
@app.route("/")
def showInfo():
  return {"name":"老王","age":18}

调度方法

flask.views.MethodView对每个HTTP方法执行不同的函数(映射到对应方法的小写的同名方法上),这对RESTful API尤其有用。

from flask.views import MethodView
class UserAPI(MethodView):
  def get(self):
    return jsonify({"method":"get"})
  def post(self):
    return jsonify({"method":"post"})
app.add_url_rule("/user",view_func=UserAPI.as_view("userview"))

当用户使用GET或POST请求http://localhost:5000/user时,会执行UserAPI中相应get,post函数。

蓝图

蓝图实现了应用的模块化,使用蓝图让应用层次清晰,开发者可以更容易的开发和维护项目。蓝图通常作用于相同的URL前缀。比如/user/item/user/info这样的地址,都以/user开头,那么他们就可以放在一个模块中。看如下例子:

### xxx.py
from flask import Blueprint
user = Blueprint("user",__name__)
@user.route("/info")
def info():
  return "User Info"
#######分割线#######
from xxx import user
app.register_blueprint(user,url_prefix="/user")

当用户请求http://localhost:5000/user/info时,就会返回”User Info”信息,效果与Django中的include类似。

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

Python 相关文章推荐
python中类的一些方法分析
Sep 25 Python
Python set集合类型操作总结
Nov 07 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
python3实现多线程聊天室
Dec 12 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
django的分页器Paginator 从django中导入类
Jul 25 Python
18个Python脚本可加速你的编码速度(提示和技巧)
Oct 17 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
TensorFlow获取加载模型中的全部张量名称代码
Feb 11 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
python如何支持并发方法详解
Jul 25 Python
python 实现德洛内三角剖分的操作
Apr 22 Python
Django中的Model操作表的实现
Jul 24 #Python
Python实现的tcp端口检测操作示例
Jul 24 #Python
python正则表达式之对号入座篇
Jul 24 #Python
Python 字符串与二进制串的相互转换示例
Jul 23 #Python
Python二进制串转换为通用字符串的方法
Jul 23 #Python
Python基于多线程实现ping扫描功能示例
Jul 23 #Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 #Python
You might like
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
详解PHP归并排序的实现
2016/10/18 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
微信小程序getPhoneNumber获取用户手机号
2017/09/29 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
个人简历自荐信
2013/12/05 职场文书
会计电算化毕业生自荐信
2014/03/03 职场文书
创新型城市实施方案
2014/03/06 职场文书
现金出纳岗位职责
2014/03/15 职场文书
同志主要表现材料
2014/08/21 职场文书
医院营销工作计划
2015/01/16 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
八年级英语教学反思
2016/02/15 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技