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之通过Python连接数据库
Oct 28 Python
python中threading超线程用法实例分析
May 16 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
PyQt5实现下载进度条效果
Apr 19 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
对Python实现累加函数的方法详解
Jan 23 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python 实现简单的客户端认证
Jul 29 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 保留字列表
2012/10/04 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
javascript简单实现命名空间效果
2014/03/06 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
python实现自动解数独小程序
2019/01/21 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
干部下基层实施方案
2014/03/14 职场文书
酒店员工手册范本
2015/05/14 职场文书
安全生产学习心得体会
2016/01/18 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python