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检测一个对象是否为字符串类的方法
May 21 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
python flask实现分页效果
Jun 27 Python
Python文件的读写和异常代码示例
Oct 31 Python
Python 错误和异常代码详解
Jan 29 Python
详解python实现线程安全的单例模式
Mar 05 Python
BP神经网络原理及Python实现代码
Dec 18 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 Python
用python实现一个简单的验证码
Dec 09 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生成缩略图的函数代码(修改版)
2011/01/18 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
jQuery 事件队列调整方法
2009/09/18 Javascript
Javascript中的getUTCHours()方法使用详解
2015/06/10 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
vue实现全选、反选功能
2020/11/17 Javascript
详解webpack和webpack-simple中如何引入css文件
2017/06/28 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
vue slot 在子组件中显示父组件传递的模板
2018/03/02 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
python实现socket端口重定向示例
2014/02/10 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python pandas时序处理相关功能详解
2019/07/03 Python
python 设置输出图像的像素大小方法
2019/07/04 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2014年党的群众路线学习心得体会
2014/11/05 职场文书
西安兵马俑导游词
2015/02/02 职场文书
库房管理员岗位职责
2015/02/12 职场文书