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 第一步 hello world
Sep 25 Python
python自定义类并使用的方法
May 07 Python
Python实现好友全头像的拼接实例(推荐)
Jun 24 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
python 堆和优先队列的使用详解
Mar 05 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
python实现PID算法及测试的例子
Aug 08 Python
详解python播放音频的三种方法
Sep 23 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
Python matplotlib可视化实例解析
Jun 01 Python
Python实现我的世界小游戏源代码
Mar 02 Python
python实现图片九宫格分割的示例
Apr 25 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 POST提交数据类
2016/07/15 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
WordPress JQuery处理沙发头像
2009/06/22 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
[03:12]完美世界DOTA2联赛PWL DAY7集锦
2020/11/06 DOTA
python实现每次处理一个字符的三种方法
2014/10/09 Python
使用python实现rsa算法代码
2016/02/17 Python
python中的错误处理
2016/04/10 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
社区艾滋病宣传活动总结
2015/05/07 职场文书
安全教育主题班会总结
2015/08/14 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
pytorch 实现在测试的时候启用dropout
2021/05/27 Python