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实现的防DDoS脚本
Feb 08 Python
python 中文乱码问题深入分析
Mar 13 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
django 中QuerySet特性功能详解
Jul 25 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
Aug 17 Python
详解Python 函数参数的拆解
Sep 02 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
详解用 python-docx 创建浮动图片
Jan 24 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自动更新新闻DIY
2006/10/09 PHP
php不允许用户提交空表单(php空值判断)
2013/11/12 PHP
PHP中的多行字符串传递给JavaScript的两种方法
2014/06/19 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
django允许外部访问的实例讲解
2018/05/14 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
Keras设置以及获取权重的实现
2020/06/19 Python
Office DEPOT法国官网:欧迪办公用品采购
2018/01/03 全球购物
掌上明珠Java程序员面试总结
2016/02/23 面试题
学生学习总结的自我评价
2013/10/22 职场文书
QA工程师岗位职责
2013/11/20 职场文书
化学实验员岗位职责
2013/12/28 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
师德建设实施方案
2014/03/21 职场文书
医学求职信
2014/05/28 职场文书
酒店优秀员工事迹材料
2014/06/02 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
捐书仪式主持词
2015/07/04 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
2016年感恩节寄语
2015/12/07 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python