目录
url_for('蓝图名称.视图函数',name='ls')
一、请求与响应是什么?
-
Request请求:是服务器在接收到客户端请求后,会自动创建Request对象,由Flask框架创建,Request对象不可修改。
- Response响应:是服务器返回给客户端的数据,是由程序员创建,返回response对象
- Redirect重定向:
二、request请求
1.引入库
from flask import Blueprint,request
2.methods请求的方式
Flask有两种请求方式:
- GET:一般用来获取服务器的信息,也可以传参给后台,但是传递的参数是在地址栏中,通常是通过url地址请求。
- POST:一般用来更新信息,作为发送数据到后台,传递数据,通常是form表单请求。
Flask默认的请求方式是‘GET’,如果要使用‘POST’请求则需要加上methods=['GET','POST'],必须两个都加上,如果只写POST也是无用的。代码如下:
#request:客户端给服务器端发送的请求
@blue.route('/request/',methods=['GET','POST'])
def get_request():
pass
print(request)
return "request ok"
3、属性
-
method——请求方法
#使用如下:
print(request.method)
-
args——GET请求参数
#使用如下:
print(request.args)
返回是ImmutableMultiDict类型:类字典对象,区别与字典的是可以出现重复的key ,
举个例子:
res=request.get('http://127.0.0.1:5000/request/?name=lisi&name=wangwu&age=33')
print(res.text)
结果是:ImmutableMultiDict类型
使用 ImmutableMultiDict类型的方式:
print(request.args['name'], request.args['age']) #lisi 33
print(request.args.get('name') #lisi 取第一个
print(request.args.getlist('name') #['lisi', 'wangwu' ] 所有
-
form——POST请求参数
#使用如下:
print(reqeust.form)
与GET请求参数返回类型一致, 返回是ImmutableMultiDict类型:类字典对象,区别与字典的是可以出现重复的key 。
-
cookies——请求中的cookies
#使用如下:
print(reqeust.cookies)
与GET请求参数返回类型一致, 返回是ImmutableMultiDict类型
-
路径属性
- request.path——路由中的路径
- request.url——完整的请求地址
- request.base_url——去掉GET参数的url
- request.host_url——只有主机和端口号的url
- request.remote_addr——客户端ip
举例如下:
假设res=request.get('http://127.0.0.1:5000/request/?name=lisi&name=wangwu&age=33')
print(request.path) #/request/ 路由
print(request.url) # http://127.0.0.1:5000/request/?name=lisi&name=wangwu&age=33
print(request.base_url) # http://127.0.0.1:5000/request/ 去掉参数
print(request.host_url) #'http://127.0.0.1:5000 去掉参数路由
结果入下:
三、Response响应
1.引入库
from flask import Blueprint,response
2、响应方式
-
返回字符串
#response:客户端给服务器端发送的请求
@blue.route('/response/')
def get_response():
pass
#响应的几种方式
# 返回字符串
return 'response ok'
直接返回字符串,可以返回文本内容,状态码
-
模板渲染(前后端不分离)
return render_template('index.html',name='zs',age=22)
-
返回json数据(前后端分离)
date={'name':'ls','age':33}
# return date
# jsonify():序列化,字典变字符串
return jsonify(date)
-
自定义
有两种方式
1、使用make_response(date,code)
date——返回的数据内容
code——状态码
html=render_template('index.html',name='zs',age=22)
print(html,type(html))
res=make_response(html,2002)
return res
2、使用Response对象
html=render_template('index.html',name='zs',age=22)
print(html,type(html))
res=Response(html)
return res
四、重定向
1.引入库
from flask import Blueprint,redirect,
2、 重定向的方式
-
直接写网址
两种情况:
1、网页上的网址(完整的),如下:
return redirect('https://www.qq.com')
2、自己写的视图函数,如下:
return redirect('response/') #自己写的
-
url_for('蓝图名称.视图函数')
url_for——反向解析,通过视图函数名反过来找路由,如下:
ret=url_for('user.get_response') #user是蓝图名,get_response是视图函数名
return redirect(ret)
-
url_for('蓝图名称.视图函数',name='ls')
url_for——还可以传参,如下:
ret=url_for('user.get_request',name='li',age=22)
return redirect(ret)
总结]
以上就是今天要讲的内容,本文介绍了Flask的请求与响应,请求的两种方式及其属性,响应的几种方式、重定向的几种方式等等。