赞
踩
request是一个内置对象,不需要创建就可以直接使用的对象。
在centos中可以直接导入flask的request
在ubuntu中导入的是flask.global的request
method是请求方法,可以使用request.method来获取请求方法。
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.method)
return 'testRequest'
运行结果:
base_url是去掉get参数的url,获取形式为:主机+端口号+资源路径
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.base_url)
return 'testRequest'
运行结果:
host_url是只有主机和端口号的url,获取形式为:主机+端口号
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.host_url)
return 'testRequest'
运行结果:
url是完整的请求地址,获取形式为:主机+端口号+资源路径+参数
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.url)
return 'testRequest'
运行结果:
remote_addr是获取请求的客户端地址
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.remote_addr)
return 'testRequest'
args是get请求参数的包装,args是一个ImmutableMultiDict对象,类字典结构对象
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.args)
return 'testRequest'
运行结果:
当有相同的参数名字的时候,返回值是第一个符合条件的值。
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.args.get('name'))
return 'testRequest'
运行结果:
要想要获取所有的符合条件的值
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.args.getlist('name'))
return 'testRequest'
运行结果:
注意:一般情况下 get请求方式都是在浏览器的地址栏上显示
例如:http://www.baiduc.com/s?name=yuanfate&age=18
form的存储结构和args一致,默认是接收post参数,还可以接收 PUT,PATCH参数。
和get请求方法返回的是同一种数据类型。
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.form)
return 'testRequest'
这个需要在postman上进行调试
运行结果:
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.form.get('name'))
return 'testRequest'
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.form.getlist('name'))
return 'testRequest'
headers是可以用来获取请求头
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.headers)
return 'testRequest'
运行结果:
path是用来获取请求资源路径
@blue.route('/testRequest/', methods=['get', 'post'])
def testRequest():
print(request.path)
return 'testRequest'
运行结果:
如果只有字符串,就是返回内容,数据还有第二个返回,放的是状态码
@blue.route('/testResponse/')
def testResponse():
return 'testResponse',404
运行结果:
render_template渲染模板,将模板变成字符串。
在templates包中添加名为testResponse1的html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
<li>源一</li>
<li>源二</li>
</ul>
</body>
</html>
在views文件中
@blue.route('/testResponse1/')
def testResponse1():
# render_template方法返回的是字符串,所以可以直接返回
a = render_template('testReponse1.html')
print(type(a))
return a
运行结果:
make_response获取的值类型是Response对象,这是与上面的唯一区别。
@blue.route('/testResponse2/')
def testResponse2():
res = make_response('<h1>Hello World</h1>')
print(type(res))
return res
运行结果:
Response获取的值类型是Response对象.
@blue.route('/testResponse3/')
def testResponse3():
# <class 'flask.wrappers.Response'>
res = Response('<h1>My World</h1>')
print(type(res))
return res
运行结果:
redirect:重定向,就是重新执行别的请求,其状态码是302
@blue.route('/index/')
def index():
return 'index'
如何在执行完testResponse4,去执行index的路由?
@blue.route('/testResponse4/')
def testResponse4():
return redirect('/index/')
a = url_for('blue.index')
print(a)
return redirect(a)
上面虽然可以实现我们的需求,但是值得注意的是,在实际的企业级开发中,一定要避免硬编码,不要将路径写死。
所以我们可以结合反向解析使用。
@blue.route('/testResponse4/')
def testResponse4():
# <class 'werkzeug.wrappers.response.Response'>
a = redirect(url_for('blue.index'))
print(type(a))
return a
运行结果:
视图函数的返回值类型可以分为字符串和response两类。
返回值类型为字符串的有:普通的字符串、render_template
返回值类型为response的有:make_response、response、redirect
abort会直接抛出,显示错误状态码,终止程序运行
@blue.route('/testAbort/')
def testAbort():
# 抛出异常
abort(405)
return 'testAbort'
运行结果:
@blue.errorhandler()可以用来异常捕获,其会根据状态或 Exception进行捕获,并且函数中要包含一个参数,参数用来接收异常信息。
@blue.errorhandler(405)
def testAbort1(exception):
return '系统正在升级。。。。'
运行结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。