flask response 详解
from flask import Flask,Response,jsonify #Flask = werkzeug(处理网络的) + sqlalchemy(处理数据库的) + jinja2 (处理模板的) app = Flask(__name__) #讲视图函数中返回的字典,转换成json对象,然后返回
#restful-api class JSONResponse(Response): @classmethod
def force_type(cls, response, environ=None):
'''
这个方法只有视图函数返回非字符、非元祖、非Response对象才会调用
:param response:是视图函数的返回值
:param environ:
:return:
'''
print(response)
print(type(response))
if isinstance(response,(list,dict)): #jsonify除了将字典转换成json对象,还将对象包装成了一个Response对象
response = jsonify(response) return super(JSONResponse,cls).force_type(response,environ) #python 面向对象的一个知识点 super app.response_class = JSONResponse @app.route('/')
def helloworld():
return 'helloworld'#相当于 return Response(response='hello world',status=200,mimetype='text/html') #直接返回字符串不是更好吗
#为什么还要用Response返回字符串
#因为在某些场合要set_cookie的时候,就要在返回的相应中设置
@app.route('/show/')
def shop():
rep = Response('购买成功')
rep.set_cookie('商品',value='小米手机,iPad')
return rep @app.route('/list/')
def list0():
return Response(response='list',status=200,mimetype='text/html') @app.route('/list1/')
def list1():
return 'list1',200 #这里相当于一个元祖 @app.route('/list2/')
def list2():
return ['','',''] if __name__ == '__main__':
app.run(debug=True)

python中反射
反射:可以用字符串的方式去访问对象的属性,调用对象的方法(但是不能去访问方法),python中一切皆对象,都可以使用反射。 反射有四种方法: hasattr:hasattr(object,name)判断一个对象是否有name属性或者name方法。有就返回True,没有就返回False getattr:获取对象的属性或者方法,如果存在则打印出来。hasattr和getattr配套使用 需要注意的是,如果返回的是对象的方法,返回出来的是对象的内存地址,如果需要运行这个方法,可以在后面添加一对() setattr:给对象的属性赋值,若属性不存在,先创建后赋值 delattr:删除该对象指定的一个属性 # 什么是反射?可以用字符串的方式去访问对象的属性
class Test():
_name = "sss"
def fun(self):
return "Helloword" t = Test()
# print(hasattr(t,"_name")) #hasattr(obj,name)#查看类里面有没有name属性
# print(hasattr(t,"fun")) #True if hasattr(t,"_name"):
print(getattr(t,"_name")) #sss
if hasattr(t,"fun"):
print(getattr(t,"fun")()) #Helloword
if not hasattr(t,"age"): #如果属性不存在
print("没有该属性和方法,我来给设置一个")
setattr(t,"age","") #给t对象设置一个默认值,默认age=18
print(getattr(t,"age"))
getattr的详细使用:
class Func:
name = 'xiaowu' def func(self):
print('hello world') value = getattr(Func,'func') #类里面的属性,或类里的方法,在内存中的地址
value() #相当于 value = Func.func 后面加个括号就是调用它, print(value)
flask response 详解的更多相关文章
- JavaWeb学习篇之----容器Response详解
今天在来看一下Response容器的相关知识,其实这篇blog早就应该编写了,只是最近有点忙,所以被中断了.下面我们就来看一下Response容器的相关知识吧.Response和我们即将在后面说到的R ...
- Taffy Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 2. 实现细节 页面使用Python Flask +Bootstrap开发,还 ...
- flask上下文详解
一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很 ...
- Taffy自动化测试框架Web开发,Python Flask实践详解
1. 前言 最近为Taffy自动化测试框架写了个页面,主要实现了用例管理.执行,测试报告查看管理.发送邮件及配置等功能. 本页面适用所有基于taffy/nose框架编写的自动化测试脚本,或基于un ...
- python flask框架详解
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...
- Request和Response详解
转自:http://zhidao.baidu.com/link?url=8BI0cjlcFdBSJKHTZlpo874eqtbTJoZfrh3miQgM_05RvSER8skPiBc1wSPZtXT8 ...
- Flask Session 详解
会话session ,允许你在不同请求 之间储存信息.这个对象相当于用密钥签名加密的 cookie ,即用户可以查看你的 cookie ,但是如果没有密钥就无法修改它. from flask impo ...
- HttpServletResponse response详解
//内容类型和编码格式可以被调用多次,最后一次将覆盖之前的设置 //内容类型和编码格式必须在 //设置内容类型getWriter和getOutputStream方法之前调用,否则不起作用 //若未设置 ...
- flask 服务器详解
#!/usr/local/bin/python # coding=utf-8 from flask import Flask app = Flask(__name__) @app.route('/') ...
随机推荐
- WSL中使用npm install报错
报错内容类似下面的格式.具体解决方法请看这里:https://github.com/Microsoft/WSL/issues/14 着重关注 https://github.com/Microsoft/ ...
- (转)Android中图片占用内存计算
在Android开发中,我现在发现很多人还不会对图片占用内存进行很好的计算.因此撰写该博文来做介绍,期望达到抛砖引玉的作用. Android中一张图片(BitMap)占用的内存主要和以下几个因数有 ...
- springfox-swagger
swagger简介 swagger确实是个好东西,可以跟据业务代码自动生成相关的api接口文档,尤其用于restful风格中的项目,开发人员几乎可以不用专门去维护rest api,这个框架可以自动为你 ...
- 在对 Angular 的文档 aio 进行编译的时候提示错误
error angular-examples-master@1.0.0: The engine "yarn" is incompatible with this module. E ...
- Struts2笔记(学struts2只需要这一篇文章)
1.如何将struts2框架引入到web项目中 1.把struts2相关jar包引入到项目中 2.把struts2的配置文件直接放到src下面,名字要叫做struts.xml.(运行时配置文 ...
- Springboot(九).多文件上传下载文件(并将url存入数据库表中)
一. 文件上传 这里我们使用request.getSession().getServletContext().getRealPath("/static")的方式来设置文件的存储 ...
- Android_(游戏)打飞机06:后续
(游戏)打飞机01:前言 传送门 (游戏)打飞机02:游戏背景滚动 传送门 (游戏)打飞机03:控制玩家飞机 传送门 (游戏)打飞机04:绘画敌机.添加子弹 传送门 (游戏)打飞机05:处理子弹, ...
- C++入门经典-例3.24-找图书的位置
1:运行代码: // 3.24.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- html_javascript 基础操作
<!DOCTYPE html> <html> <body> <h1>My Web Page</h1> <p id="demo ...
- centos6.4编译gcc6.4
#!/bin/bash dir=$(pwd) echo $dir cd $dir #wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz .tar ...