返回响应
-
直接返回响应体数据
return '字符串'
-
直接返回响应体数据+状态码
return '字符串',状态码
-
直接返回响应体数据+状态码+响应头信息
return '字符串',状态码,{'key':'value'}
from flask import Flask
app = Flask(__name__)
@app.route('/index', methods=['POST', 'GET'])
def index():
# 1.直接返回响应体数据
# return "hello world"
# 2.直接返回响应体数据+状态码
# return "hello world", 666
# return "hello world", "666 BIGERROR"
# 3.直接返回响应体数据+状态码+响应体信息
return "hello world", 200, {"Content-Type": "application/json", "name": "lili"}
if __name__ == '__main__':
app.run(debug=True)
通过jsonify返回json数据
- 格式:jsonify(dict)
- 简化格式:jsonify(key=value,key2=value2)
def index():
dict = {
"name": "lili",
"age": 18
}
# 方法一
# return jsonify(dict)
# 方法二
return jsonify(name='lili', age=18)
重定向
- 格式:redirect(‘地址’),地址既可以是本地服务器地址,也可以是其他服务器地址
- 注意点:重定向的代号是302
- 特点:重定向是两次请求
@app.route('/')
def index():
# 重定向到百度
return redirect("http://www.baidu.com")
url_for
- 解释:称为反解析,返回的是视图函数对应的路由地址
- 格式:url_for(‘视图函数’,key=value)
- 注意点:url_for经常配合redirect使用,传递参数
示例:
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/jingdong')
def jingdong():
print(url_for("taobao", token=123))
response = redirect(url_for("taobao", token=123))
return response
@app.route('/yamaxun')
def yamaxun():
response = redirect(url_for("taobao", token=456))
return response
@app.route('/taobao/<int:token>')
def taobao(token):
if token == 123:
return "欢迎京东用户"
elif token == 456:
return "欢迎亚马逊用户"
else:
return "欢迎其他用户"
if __name__ == '__main__':
app.run()
abort&errorhandler
- 使用场景:当访问服务器资源的时候,如果找不到该资源,可以报出异常信息,使用errorhandler捕捉
- 格式:abort(代号)
- 格式:@app.errorhandler(代号)
示例:
from flask import Flask, abort
app = Flask(__name__)
@app.route('/')
def hello_world():
abort(403)
return "hello world"
@app.errorhandler(404)
def page_not_found(e):
print(e)
return "<h1>页面找不到</h1>"
@app.errorhandler(403)
def forrden(e):
print(e)
return "<h1>禁止访问</h1>"
if __name__ == '__main__':
app.run(debug=True)
request对象参数
- request.data:获取的是非表单(ajax)以post,提交的数据
- request.form:获取的表单以post方式提交的数据
- request.args:获取的是问号后面的查询参数
- request.method:获取的请求方式
- request.url:获取请求的地址
- request.files:获取的是input标签中type类型为file的文件
- request.cookies:获取的是请求中的cookies信息
- request.headers:获取的是请求中的报文头
常用示例:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def hello_world():
print(request.method)
print(request.url)
print(request.args)
# print(request.args["name"]) # 字典不建议使用[]的方式取值,不够灵活
print(request.args.get("name")) # 如果取不到不会报错,会返回None,建议使用
print(request.args.get("age", 39)) # 如果获取不到,设置一个默认值
return "hello world"
if __name__ == '__main__':
app.run(debug=True)