abort函数 立即终止视图函数的执行
abort(403)
1、里面可以指定http状态码,但必须是存在的状态码,不然会报错,使用状态码会跳转到状态码页面
2、可以自定义信息返回给前端页面
from flask import Flask,abort,Responseapp = Flask(__name__)
.route("/login",methods=["GET"])
def login():
# 使用abort函数可以使视图函数立即终止执行
# 并可以自定义信息返回给前端
name = ''
pwd = ''
if name != "admin" or pwd != "123456":
abort(400)
return "login success"
if __name__ == '__main__':
app.run(debug=True)
使用Response方法自定义返回页面的内容
首先导入Response方法
from flask import Flask,Response
resp = Response("login failed")abort(resp)
接收错误状态码方法
@app.errorhandler(404) # 用来接收程序抛出的404请求,并绑定视图函数返回一个自定义友好页面
def error_404(err):return "页面错误,错误代码:%s" % err
视图函数中的参数要带,这是错误代码的详细信息
from flask import Flask,abort,Responseapp = Flask(__name__)
.route("/login",methods=["GET"])
def login():
# 使用abort函数可以使视图函数立即终止执行
# 并可以自定义信息返回给前端
name = ''
pwd = ''
if name != "admin" or pwd != "123456":
# resp = Response("login failed")
abort(404)
return "login success"
.errorhandler(404)
def error_404(err):
return "页面无效,错误代码:%s" % err
if __name__ == '__main__':
app.run(debug=True)
可以看到状态码是200,这样可以有效的防止扫描器扫描
设置自定义响应信息的两种方法
1、return后跟
return "hello flask" , 400 , {"nbfes":"baicai" , "music":"djone"}
参数
1、返回到页面的内容(响应体)
2、状态码,此处状态码并无实际意义,只是给页面返回一个状态值,页面还是正常返回(状态码)
3、以字典的形式设置响应包的头(响应头)
.route("/index")def index():
return "hello flask" , 400 , {"nbfes":"baicai","music":"dj"}
状态码的第二个参数可以是一个字符串,即状态码的解释
例如:默认状态下200状态码代表OK,404代表NOT FOUND
那么如果定义了666状态码,怎么设置解释呢,即
return "hello flask" , "666 nbfe status" , {"music":"dj","nbfes":"baicai"}
2、使用make_response设置响应信息
导入make_response方法
from flask import make_response.route("/index")
def index():
# 使用make_response来设置响应信息
resp = make_response("hello flask") # 里面放返回到页面的响应体,返回一个对象
resp.status = "666 nbfesStatus" # 设置响应码
resp.headers["city"] = "shandong" # 设置响应头
return respresp = make_response(响应体) # 返回一个对象
resp.status = # 设置响应状态码
resp.headers[""] = # 设置响应头信息
处理Json字符串的两种方法
1、import json 使用json模块处理
json.dumps(字典) # 将Python字典转换为json字符串
json.loads(字符串) # 将字符串转换为Python字典
from flask import Flaskimport json
app = Flask(__name__)
.route("/index")
def index():
# json就是字符串
data = {
"name":"Python",
"age":20
}
# json.dumps(字典) 将python的字典转换为json字符串
# json.loads(字符串) 将json字符串转换为字典
json_str = json.dumps(data)
return json_str , 200 , {"Content-Type":"application/json"}
if __name__ == '__main__':
app.run(debug=True)
2、也可以通过flask模块内置的方法 jsonify 进行转换
from flask import Flask,jsonify......
.route("/index")
def index():
data = {
"name":"Python",
"age":20
}
return jsonify(data)
....
jsonify 将字典转为json数据,并自动设置响应头为(Content-Type : application/json)
也可以手动添加键值对进去,jsonify会自动转为json数据返回到页面
return jsonify(city="shandong",music="dj")