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并发2之使用asyncio处理并发
Dec 21 Python
Python设计模式之中介模式简单示例
Jan 09 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
详解python websocket获取实时数据的几种常见链接方式
Jul 01 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
django中的图片验证码功能
Sep 18 Python
简单了解python元组tuple相关原理
Dec 02 Python
python opencv实现图像配准与比较
Feb 09 Python
python使用pygame创建精灵Sprite
Apr 06 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
解决numpy和torch数据类型转化的问题
May 23 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实现框架(一)
2006/10/09 PHP
PHP多线程抓取网页实现代码
2010/07/22 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
2012/01/20 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
js实现数组转换成json
2015/06/26 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
js 递归和定时器的实例解析
2017/02/03 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
微信小程序picker组件下拉框选择input输入框的实例
2017/09/20 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python IDE PyCharm的基本快捷键和配置简介
2015/11/04 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
flask框架使用orm连接数据库的方法示例
2018/07/16 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
财务总监管理岗位职责
2014/03/08 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL