flask学习(二)

钩子函数

钩子函数是指在执行函数和目标函数之间挂载的函数, 框架开发者给调用方提供一个point -挂载点, 至于挂载什么函数有我们调用方决定, 这样大大提高了灵活性。
在这里插入图片描述

常用的钩子函数

before_first_request

在这里插入图片描述
执行:

@app.before_first_request
def before_first_request():
    print('这是第一次请求之前执行的')

执行结果
在这里插入图片描述

before_request

在这里插入图片描述
执行:

@app.before_request
def before_request():
    print('每次请求之前调用')

执行结果:
在这里插入图片描述
注意点
1.在每次调用之前运行
2.在调用时不需要函数
3.如果有一个非空的返回值,name返回值会被当做饷应。

after_reques

在这里插入图片描述
执行:

@app.after_request
def after_request(response):
    print('在每个请求之后注册一个要运行的函数, 每次请求都会执行.')
    return response

执行之后:
在这里插入图片描述
注意点
1.在每次请求之后运行;
2.在调用的过程中需要传递参数,参数是一个响应对象;
3.必须要有返回值,返回值也是一个响应对象,可处理。

teardown_request

在这里插入图片描述

@app.teardown_request
def teardown_request(parm):
    print('注册一个函数在每个请求的末尾运行,不管是否有异常, 每次请求的最后都会执行.')
    return parm

在这里插入图片描述

总体代码如下:

from flask import Flask,request

app=Flask(__name__)#创建一个flask应用

@app.before_first_request

def before_first_request():
    print('这是第一次请求之前执行的')
    
@app.before_request
def before_request():
    print('每次请求之前调用')

@app.after_request
def after_request(response):
    print('在每个请求之后注册一个要运行的函数, 每次请求都会执行.')
    return response
    
@app.teardown_request
def teardown_request(parm):
    print('注册一个函数在每个请求的末尾运行,不管是否有异常, 每次请求的最后都会执行.')
    return parm


@app.route('/index',methods=['POST','GET'])#创建flask应用
def before_request():
    print(request)
    print(request.url)
    print(request.method)
    print('data',request.data)
    print('form',request.form)
    print('file',request.files)
    files=request.files.get('file')
    files.save('./static/1.png')
    return 'index'

if __name__ == '__main__':
    app.run(debug=True,port=5011)

cookie

from flask import Flask,make_response,request
app=Flask(__name__)
@app.route('/getcookie')
def getcookie():
    print('##################')
    print(request.cookies)
    return '取出cookie'
@app.route('/index',methods=['POST',"GET"])
def index():
    response=make_response('ok')   
    response.set_cookie('username','tom')
    return response
if __name__ == '__main__':
    app.run(debug=True,port=5001)

可注意到的是,Cookies 是设置在响应对象上的。由于通常视图函数只是返回字符串,之后 Flask 将字符串转换为响应对象。如果你要显式地转换,你可以使用 make_response() 函数然后再进行修改。

session

除请求对象之外,还有一个 session 对象。它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名。这意味着用户可以查看你 Cookie 的内容,但却不能修改它,除非用户知道签名的密钥。

要使用会话,你需要设置一个密钥。这里介绍会话如何工作:

from flask import Flask,session,render_template
app=Flask(__name__)
app.secret_key='vsajkvakjvalkjvakjbvjaklkj'
@app.route('/getinfo')
def getinfo():
    return session.get('college')
@app.route('/index',methods=['GET','POST'])
def index():
    # session['college']='哈佛'
    str1='python'
    list1=[1,2,3]
    return render_template('moban.html',str1=str1,list1=list1)
if __name__ == '__main__':
    app.run(debug=True)

注意要有template文件夹,没有就创建一个。
如果想在html页面中加入东西,做法如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h1>这是jinja2语言的学习</h1>
{{ str1 }}<BR>
{{ list1 }}
</body>
</html>

结果如下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值