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入门教程
Feb 08 Python
Python中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python探索之修改Python搜索路径
Oct 25 Python
对命令行模式与python交互模式介绍
May 12 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
May 19 Python
Linux下python制作名片示例
Jul 20 Python
对python 通过ssh访问数据库的实例详解
Feb 19 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
python做反被爬保护的方法
Jul 01 Python
python设置环境变量的作用整理
Feb 17 Python
python批量生成条形码的示例
Oct 10 Python
python使用PySimpleGUI设置进度条及控件使用
Jun 10 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猴子选大王问题解决方法
2015/05/12 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
jQuery之按钮组件的深入解析
2013/06/19 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
Supersmart英国:欧洲市场首批食品补充剂供应商之一
2018/05/05 全球购物
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
沃达丰英国有限公司:Vodafone英国
2019/04/16 全球购物
初中体育教学反思
2014/01/14 职场文书
购房委托书范本
2014/09/18 职场文书
工作证明格式范文
2015/06/15 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
关于python中模块和重载的问题
2021/11/02 Python
frg-100简单操作(设置)说明
2022/04/05 无线电
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android