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数据结构之二叉树的统计与转换实例
Apr 29 Python
Python入门篇之字符串
Oct 17 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP中Session的概念
2006/10/09 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
js跨域访问示例(客户端/服务端)
2014/05/19 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
[49:31]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第二场 1月29日
2021/03/11 DOTA
python实现井字棋游戏
2020/03/30 Python
在Windows中设置Python环境变量的实例讲解
2018/04/28 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
搬家公司的创业计划书
2014/01/01 职场文书
校园报刊亭的创业计划书
2014/01/02 职场文书
家长学校实施方案
2014/03/15 职场文书
网站美工岗位职责
2014/04/02 职场文书
电子信息工程专业求职信
2014/06/28 职场文书
预备党员思想汇报1000字
2014/10/07 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
学生病假条怎么写
2015/08/17 职场文书
Python利用folium实现地图可视化
2021/05/23 Python