Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据
1 后台获取请求数据
1.1 提出问题
前台发送请求的方式有哪些
后台如何获取这些请求的参数
1.2 前台发送请求的方式
GET、POST、AJAX
点睛:如果不指定请求方式,浏览器默认使用GET请求
点睛:进入登录页面的请求和提交登录信息的请求使用的路径都是一样的,只不过前往登录页面的请求是GET请求,服务器返回的是一个静态的页面;当录入登录信息点击确定后就会向后台发送一个POST请求,后台经过逻辑处理后,如果登录信息正确就会返回一个静态主页面(注意:虽然这两个请求都是使用的一样的路径,但是我们的后台会根据不同的请求方式执行不同的逻辑);
1.2.1 GET请求实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单请求</title>
</head>
<body>
<div>
<form action="/test/form/" method="get">
<div>
<label for="username">用户</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</div>
</body>
</html>
1.2.2 POST请求实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单请求</title>
</head>
<body>
<div>
<form action="/test/form/" method="POST">
<div>
<label for="username">用户</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</div>
</body>
</html>
1.2.3 AJAX请求实例
GET形式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="jquery-3.2.1.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": ""
};
url = "/test/ajax/";
$.get(url, data);
</script>
</body>
</html>
POST形式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="jquery-3.2.1.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": ""
};
url = "/test/ajax/";
$.post(url, data);
</script>
</body>
</html>
1.3 后台接收请求的方式
后台利用request对象的相关方法获取前台发送过来的请求参数
request.args 获取GET请求参数
request.form 获取POST请求参数
1.3.1 获取GET/POST请求参数实例

1.3.2 获取AJAX请求参数实例

from flask import Flask
from flask import request app = Flask(__name__, static_folder='./workStatic') request.args
request.form @app.route('/')
def index():
return '练习代码的主页' @app.route('/test/form/', methods=['GET', 'POST'], endpoint='test01')
def test():
getData = request.args # 利用request对象获取GET请求数据
print('获取的GET数据为:', getData) # 打印获取到的GET数据
postData = request.form # 利用request对象获取POST请求数据
print('获取的POST数据为:', postData) # 打印获取到的POST请求
return '这是测试页面' @app.route('/test/ajax/', methods=['GET','POST'], endpoint='test02')
def test():
postData = request.form; # 获取ajax的请求参数(请求方式时post)
print('post形式的ajax请求参数:', postData) # 打印获取到的参数
# print(request.form.get('username')) # 获取指定的参数 getData = request.args; # 获取ajax的请求参数(请求方式时get)
print('get形式的ajax请求参数:', getData)
print(request.args.get('password'))
return '这是测试ajax请求页面' print(app.url_map) if __name__ == '__main__':
app.run(debug=True)
后台源代码
1.4 小应用
后台根据不同的请求方式使用不同的方法获取请求参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>表单请求</title>
</head>
<body>
<div>
<form action="/test/" method="POST">
<div>
<label for="username">用户</label>
<input type="text" name="username" id="username" />
</div>
<div>
<label for="password">密码</label>
<input type="password" name="password" id="password" />
</div>
<div>
<input type="submit" value="提交" />
</div>
</form>
</div>
</body>
</html>
form表单页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="jquery-3.2.1.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": "123321"
};
url = "/test/";
$.post(url, data);
</script>
</body>
</html>
ajax请求页面
from flask import Flask
from flask import request app = Flask(__name__, static_folder='./workStatic') @app.route('/')
def index():
return "小应用主页面" @app.route('/test/', methods=['GET', 'POST'], endpoint='test01')
def test():
print('请求头: ', request.headers) # 打印输出头部信息
print('请求方法:', request.method) # 打印输出请求方法 if(request.is_xhr):
print('AJAX请求参数为:', request.form)
elif(request.method == 'GET'):
print('GET形式的表单请求参数为:', request.args)
else:
print('POST形式的表单请求参数为:', request.form)
return '分方式获取请求参数' print(app.url_map) if __name__ == '__main__':
app.run(debug=True)
后台处理页面
2 后台视图函数的返回值类型
2.1 提出问题
后台的视图函数的返回值只能是字符串形式吗
2.2 后台视图函数的返回值种类
字符串
元组
response对象
2.3 返回字符串的实例
这个太简单,三少在这里就不废话啦
2.4 返回元组类型
格式:
return (需要返回的数据, 状态码, 响应信息)
注意:需要返回的数据必须是字符串,如果是json格式的数据就用引号括起来,从而变成字符串
例如:
return ('hello', 200, {})


2.5 返回response对象

2.5.1 返回response对象的应用
重定向返回的就是response对象

from flask import Flask
from flask import url_for
from flask import redirect app = Flask(__name__) @app.route('/')
def index():
# return '重定向测试页面'
path = url_for('test01')
print('路径为:', path)
resp = redirect(path)
print('重定向方法返回值的类型为: ', type(resp))
return resp @app.route('/test/', endpoint='test01')
def test():
return '测试页面' print(app.url_map) if __name__ == '__main__':
app.run(debug=True)
3 后台响应数据
3.1 后台如何向前台响应数据
利用视图函数的返回值来设定,可以返回字符串,也可以返回元组,还可以返回一个Response对象
3.1 利用jsonify返回json格式的数据
注意:jsonify方法返回的实际上就是一个Response对象

from flask import Flask
from flask import request
from flask import jsonify app = Flask(__name__, static_folder='./workStatic') @app.route('/')
def index():
return 'work05的测试页面' @app.route('/test/', methods=['GET', 'POST'])
def test():
if(request.is_xhr):
print('前台发送的是ajax请求哟.')
resp = jsonify({
"username": "王杨帅",
"address": "重庆市"
})
# jsonify方法返回的是一个response对象
else:
print('前台发送的是普通的请求')
resp = "这是后台响应的数据哟"
return resp print(app.url_map) if __name__ == '__main__':
app.run(debug=True)
注意:ajax请求接收后台的返回数据方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax请求</title>
<script src="jquery-3.2.1.js"></script>
</head>
<body>
ajax请求测试页面
<script>
data = {
"username": "warrior",
"password": ""
};
url = "/test/";
$.post(url, data).done(function (data) {
alert(data.address);
alert(data.username);
});
</script>
</body>
</html>
Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据的更多相关文章
- django views视图函数返回值 return redirect httpresponse总结
django views视图函数返回值 return redirect render httpresponse总结
- vector作为函数返回类型
在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...
- c/c++: c++函数返回类型什么情况带const
c++ 函数的返回类型,包括const 什么时候起作用呢? 函数返回值不想其立即修改的. 例子如下,这是一个简单的避免产生隐形返回变量的方法,abc 的函数返回是引用,main函数中第10行,++ 操 ...
- ASP.NET请求过程-视图如何返回客户端
本文主要讲控制器返回ActionResult后怎么变成html到客户端的. 控制器返回的各种类型 返回所有类型的基类ActionResult // // 摘要: // 表示操作方法的结果. publi ...
- Flask框架 之abort、自定义错误、视图函数返回值与jsonify
一.abort函数 使用abort函数可以立即终止视图函数的执行,并可以返回给前端特定的值. abort函数的作用: 1.传递状态码,必须是标准的http状态码 2.传递响应体信息 @app.rout ...
- 后台以json数据形式返回之后前台接受的方法以及之后的解析总结
1.前台AJAX请求,后台以对象转JSON形式返回: 后台代码: @RequestMapping(value = "/queryDist", method = RequestMet ...
- C# 后台获取请求来源、文件下载
文件流下载文件 void BigFileDownload() { try { string FileName = "测试.docx"; string filePath = Page ...
- 前台通过form表单向Django后台传输数据,Django处理后返回给前台
摘要:Django前后台数据传递 通过action将数据传输给apitest这个地址,使用get方法传递,此处需要传递name="request_method"的下拉列表值和nam ...
- MSSQLSERVER数据库- 字符串分割函数返回类型表
遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6.想把这串字符串进行转变成一个表格,如下: 1 2 3 4 5 6 就是这样一个问题,有人同事,写了一个这样的封装函数,这样就 ...
随机推荐
- (转)fiddler实现手机抓包的基础设置问题
电脑最好是笔记本,这样能和手机保持统一局域网内:其他不多说,直接说步骤了. 一.对PC(笔记本)参数进行配置 1. 配置fiddler允许监听到https(fiddler默认只抓取http格式的 ...
- ES6学习目录
前面的话 ES6是JavaScript语言的下一代标准,已经在 2015 年 6 月正式发布.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 为什么要学 ...
- 关于Django的理解
Django的理解 Django的核心是中间件, 所有的请求和响应都会经过中间件 中间件是一个钩子框架, 它们可以介入请求的响应处理过程, 它用于在全局修改Django的输入和输出 Django有以下 ...
- Java基础之接口与抽象类及多态、内部类
final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...
- 勤快的love枫[ZJOI2007]
题目描述 小绝恋love 枫是一个出纳,经常需要做一些统计报表的工作.今天是绝恋love 枫的生日,小绝恋love 枫希望可以帮爸爸分担一些工作,作为他的生日礼物之一.经过仔细观察,小绝恋love 枫 ...
- 如何开发自己的搜索帝国之Elasticsearch
搜索引擎是什么? 搜索引擎是指根据一定的策略.运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统.搜索引擎包括全文索引.目录索引 ...
- akoj-1369 贪吃蛇
贪吃蛇 Time Limit:1000MS Memory Limit:65536K Total Submit:9 Accepted:2 Description 有童年的孩子都玩过这个经典游戏,不过这里 ...
- java异常捕获的一点感悟
class Annoyance extends Exception {} class Sneeze extends Annoyance {} class Human { public static v ...
- 正则表达式(即:匹配模式Pattern)
通过学习<正则表达式-Regular-Expression-Tutorial.pdf>这份文档,对正则表达式有了很好的了解,原因只有1个--这份文档写得太好了. 它的下载地址是:http: ...
- webpack的四个核心概念介绍
前言 webpack 是一个当下最流行的前端资源的模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后 ...