Flask初学者:视图函数/方法返回值(HTML模板/Response对象)
返回HTML模板:使用“from flask import render_template”,在函数中传入相对于文件夹“templates”HTML模板路径名称字符串即可(默认模板路径),flask会自动到项目根目录的“templates”文件夹(创建flask项目时,PyCharm会自动创建两个空文件夹,其中一个就是“templates”)下寻找对应的HTML文件。
- 默认模板路径:项目根目录下的templates文件夹。
- 自定义模板路径:如果不想使用默认的模板路径,即项目根目录的templates文件夹,可以在实例化flask时指定参数template_folder的值,以指定默认模板的路径。
- 模板传参:如果需要给HTML模板传参,则在“render_template”中使用变量名或字典进行传参即可(在Python2中,如果涉及中文,需要使用Unicode字符串)。

返回Response对象:视图函数返回响应Response给浏览器,一般来说只能是字符串和固定格式的元组,当然也可以自定义,但无论是返回哪种数据格式,最终都是被包装成一个Response对象返回给浏览器的。返回的是字符串时,其实也是被包装成Response对象返回给浏览器的。也可以是一个固定格式的元组:(Response, status, headers),即响应体、状态码和头信息的元组,可以只返回一个Response,或者两个(Response, status),或者全部返回(Response, status, headers)。当可以自定义返回的响应体时需要注意以下几点:
- Response子类:自定义的Response子类必须继承自from flask import Response(其实就是from werkzeug.wrappers import Response)。
- response_class:使用app.response_class=MyResponse使之生效。
- force_type(response, environ=None):当返回的数据类型,既不是字符串,也不是元组时,flask就会调用Response的force_type方法来处理,如果不能处理就会返回错误,所以Response子类一般是需要重写这个方法来返回一个合法的数据,参数response即为传入的不合法的数据,可以经过处理后返回一个合法的Response对象。
from flask import Flask, Response app = Flask(__name__) class MyResponse(Response):
"""自定义Response类"""
@classmethod
def force_type(cls, response, environ=None):
"""重写force_type方法,当参数既不是字符串,
也不是(Response, status, headers)元组时会调用此方法"""
if isinstance(response, list):
response = Response('+'.join(response)) # 这里需要包装成Response对象才能传入父类的force_type中,
# 只传字符串会报错
return super().force_type(response, environ) # 指定自定义的Response类,使之生效
app.response_class = MyResponse @app.route('/listresponse/')
def list_response():
# 返回一个不合法的数据
# 如果没有自定义的Response类来处理的话,就会报错
return ['python', ''] if __name__ == '__main__':
app.run(debug=True)
Flask初学者:视图函数/方法返回值(HTML模板/Response对象)的更多相关文章
- C#提高--------------获取方法返回值的自定义特性(Attribute)
.NET(C#):获取方法返回值的自定义特性(Attribute) 转载 2013年05月08日 10:54:42 1456 来自:http://www.cnblogs.com/mgen/archiv ...
- GDB 修改当前判断函数的返回值(即修改寄存器的值)的方法
工作中遇到的问题: 在GDB调试时要进入下边该判断后边的函数,而m_EtherDecode.Chk_MakeSure_IP_Pkt(pPacket,dwPacketLen)的返回值是false,所以需 ...
- 将函数作为返回值的方法 - Python
有的时候,我们需要将函数作为返回值,以下为代码: def superfunc(): i = 0 def wrapper(): nonlocal i i +=1 return i return wrap ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- AJAX JQuery 调用后台方法返回值(不刷新页面)
AJAX JQuery 调用后台方法返回值(不刷新页面) (1)无参数返回值(本人亲试返回结果不是预期结果) javascript方法: $(function () { //无 ...
- 简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)
本文将简单介绍如何使用PowerMock和Mockito来mock1. 构造函数2. 静态函数3. 枚举实现的单例4. 选择参数值做为函数的返回值5. 在调用mock出来的方法中,改变方法参数的值 一 ...
- javascript . 03 函数定义、函数参数(形参、实参)、函数的返回值、冒泡函数、函数的加载、局部变量与全局变量、隐式全局变量、JS预解析、是否是质数、斐波那契数列
1.1 知识点 函数:就是可以重复执行的代码块 2. 组成:参数,功能,返回值 为什么要用函数,因为一部分代码使用次数会很多,所以封装起来, 需要的时候调用 函数不调用,自己不会执行 同名函数会覆盖 ...
- SpringMVC的@RequestMapping和Controller方法返回值
本节内容: @RequestMapping Controller方法返回值 一.@RequestMapping 通过@RequestMapping注解可以定义不同的处理器映射规则. 1. URL路径映 ...
随机推荐
- elasticsearch排序-----5
我们之前查询出的结果都会有一个_score分值表示列出结果与搜索结果的相关性,该值越高排序位置越靠前,es具体是如何计算该值的,我们认真来看看. 1.根据字段值排序 比如我们要查询/index5下su ...
- React 内部属性与函数
constructor 构造函数,在创建组件的时候调用一次. 例子: class TodoList extends React.Component { constructor(props, conte ...
- Android 切换主题换肤实现
思路以及实现 1.主题的切换以及实现 首先我们先来明确个概念,现在我所说的切换主题,就切换整个app的颜色风格,当然也有少部分的图片的切换.注意哦 我这边说的是少部分图片哦!如果是大面积的换图片的吧! ...
- react-native —— 在Mac上搭建React Native Android开发环境
需要:JDK,Android SDK,Node.js 1.安装JDK 去Java官网下载列表选择Mac OS X x64版 2.安装Android SDK 虽然现在谷歌推荐使用Android ...
- u-boot分析(七)----内存初始化
u-boot分析(七) 上篇博文我们按照210的启动流程,分析到了时钟初始化,今天我们继续按照u-boot的启动流程对内存的初始化进行分析. 今天我们会用到的文档: 1. 2440芯片手 ...
- [RDLC]心得整理(一)
2014年在做项目的时候, 过用过RDLC, 之后便在没有使用过了. 最近又有项目使用rdlc, 感觉有些陌生,然后重新阅读了以前的笔记,想做一下整理. 常见问题: 1. 为什么rdlc报表出来的pd ...
- sql数据库常用操作
string connectionString = @"Data Source=(local)\sql2008r2;Initial Catalog=Movies;Uid=sa;Pwd=sql ...
- MSSQL复制分发对异构数据库之间大容量数据分发造成异常
由于历史遗留的问题,现有的架构中存在采用MSSQL的复制分发功能,从Oracle发布数据到MSSQL. 关于这项发布的实现原理,官方表述如下: Oracle 事务发布是通过使用 SQL Server ...
- PHP设计模式之单例模式
<?php #千锋PHP http://www.qfedu.com/php/? #千锋PHP http://www.qfedu.com/php/? namespace app; /** * Cl ...
- Java解析Excel工具类(兼容xls和xlsx)
依赖jar <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l ...