第四篇:flask基础四讲--请求钩子和响应

1.请求钩子:在处理请求之前或之后的执行代码。
before_request:注册一个函数,在每次请求之前运行。
before_frist_request:注册一个函数,只在处理第一个请求之前运行。可以通过这个钩子添加服务器初始化任务
after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_request:注册一个函数。即使有未处理的异常抛出,也在每次请求之后运行。
说明:在请求钩子函数和视图函数之间共享书记一般使用全局变量g.
2.响应:多数情况下,响应就是一个简单的字符串,作为HTML页面送回客户端。但是http协议需要的不仅是作为请求响应的字符串。还有一个重要部分是状态码,flask默认是200,表明请求已被成功处理,如果视图函数返回的响应需要不同的状态码,可以把数字代码作为第二返回之,添加到响应文本之后。

@app.route("/fris/<jiu>")
def fris(jiu):
    return "<h1>fsajfksa<h1>",400

3.视图函数还可以返回的响应接受第三个参数。后面章节具体讲到
4.视图函数还可以返回一个响应对象。make_response()函数可以接受一个,两个,三个参数(和视图函数返回值一样)。有时还会在视图函数生成响应对象。

from flask import Flask,request,make_response
@app.route("/oner")
def oner():
    response=make_response("<h1>fsajfksa<h1>")
    response.set_cookie("ad","42")
    return response

5.响应对象的属性或者方法:
status_code http状态码
headers 一个类似字典的对象,包含随响应发送的所有首部
set_cookie() 为响应添加一个cookie
delete_cookie() 删除一个cookie
content_length 响应主题的长度
content_type 响应主题的媒体类型
set_data() 使用字符串或者字节值设定响应
get_data() 获取响应主题
6.重定向,flask提供了redirect()辅助函数,用于生成这种函数

from flask import redirect
@app.route("/cdx")
def cdx():
    return redirect("https://www.zhihu.com/")

7.还有一种特殊的响应由abort()函数生成,用于处理错误,在下面例子中如果url中的动态参数id对应的用户不存在就返回状态码404:

from flask import  abort
@app.route("/yonghu/<id>")
def yonghu(id):
    user=load_user(id)
    if not user:
        abort(404)
    return "<h1>hello,{}</h1>".format(user.na
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值