flask框架3

Posted zahngyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask框架3相关的知识,希望对你有一定的参考价值。

 

详细见:https://www.cnblogs.com/xiaoyuanqujing/articles/11715484.html

1.Local与偏函数

2.init递归

3.请求上下文

4.蓝图

 

5.g对象

6.信号

7.flask-session

 

 

一.Local与偏函数

二.init递归

三.请求上下文

四.蓝图

@@@见电脑视频盘flask文件夹里面

五.g对象

"""
结论:
1.当前请求内你只要设置了就可以取,只要你不return掉,
2.必须先设置后取,当前请求内可以取无限次
3.就算你当前请求设置了,如果不取,其他请求过来,也是取不到的
"""
from flask import Flask,request,g
app = Flask(__name__)

#
@app.before_request
def a():
    # 当一个url路径等于根的时候,带一个参数过去要用
    if request.path == "/":
        request.name = "sb"
        g.name = "sb"
    print(g.name)

# def set_g():
#     g.name = "sb"

@app.route(/)
def index():
    # set_g()
    print(g.name)

    return "1"

@app.route(/index)
def login():
    return 2

if __name__ == __main__:
    app.run()

 

六.信号

首先需要安装:pip3 install blinker

 

from flask import Flask,signals,render_template
app = Flask(__name__)
# 往信号中注册函数
#1给信号绑定要执行的函数
#无需管调用,因为flask,已经给我们设置调用点
def func(*args,**kwargs):
    print(触发型号,args,kwargs)
#与该信号进行绑定 绑定这个函数对象
signals.request_started.connect(func)
# 点send就会触发
# signals.request_started.send
# 触发信号: signals.request_started.send()
@app.before_first_request
def before_first1(*args,**kwargs):
    print("befor_first_request")

@app.before_request
def before_first3(*args,**kwargs):
    print("befor_request")

@app.route(/,methods=[GET,"POST"])
def index():
    print(视图)
    return "视图"

if __name__ == __main__:
  # app.wsgi_app
    app.run()

 

自定义信号:

from flask import Flask
from flask.signals import _signals
app = Flask(import_name=__name__)
# 1.自定义信号
xxxxx = _signals.signal(xxxxx)

def func(sender,a):
    print(sender,a)
    print("我是自定义信号")

# 2.自定义信号中注册函数 传入这个函数对象
xxxxx.connect(func)

@app.route("/x")
def index():
    # 3.触发信号 就算不传也要接受参数,第一个参数就是那个人去调的,没有实际意义
    # 只允许第一个参数用位置传参,第二个参数必须用关键字传参
    xxxxx.send("sb",a="1")
    return Index

if __name__ == __main__:
    app.run()

 

七.flask-session

首先需要安装:pip3 install flask-session

使用方法一:(复杂)

‘‘‘
参数代表什么:
1.key_prefix=‘jason‘,2.use_signer=True,3. permanent=False
1.随便写就是一个前缀
2.False不用设置秘钥,如果为True就需要秘钥
3.关闭浏览器浏览器失效
‘‘‘
技术图片
 1 # 将session存入redis中
 2 from flask import Flask,session
 3 # 要放入redis中就导入redis
 4 from flask_session import RedisSessionInterface
 5 import redis
 6 app = Flask(__name__)
 7 # 就是一个秘钥
 8 app.secret_key="ajksda"
 9 # redis链接
10 conn=redis.Redis(host=127.0.0.1,port=6379)
11 
12 #use_signer是否对key签名
13 app.session_interface=RedisSessionInterface(conn,key_prefix=jason,use_signer=True, permanent=False)
14 @app.route(/)
15 def hello_world():
16     session[sb]=jason
17     return Hello World!
18 
19 @app.route(/index)
20 def index():
21     print(session[sb])
22     return "ok"
23 
24 if __name__ == __main__:
25     app.run()
View Code

 

使用方式二(推荐使用)

from flask import Flask,session
import  redis
from flask_session import Session
app = Flask(__name__)
# 需要存入redis数据库
app.config[SESSION_TYPE] = redis
# redis链接
app.config[SESSION_REDIS] =redis.Redis(host=127.0.0.1,port=6379)
# 存入时加个前缀
app.config[SESSION_KEY_PREFIX]="jason"
Session(app)

@app.route(/)
def hello_world():
    session[sb]=jason
    return Hello World!

@app.route("/index")
def index():
    print(session[sb])
    return "ok"

if __name__ == __main__:
    app.run()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于flask框架3的主要内容,如果未能解决你的问题,请参考以下文章

python后端 flask框架 计算时间差 并根据时间差条件返回flag值

python后端 flask框架 计算时间差 并根据时间差条件返回flag值

flask框架配套代码

Flask之模板之宏继承包含

Flask框架学习整理——从零开始入门Flask

python Flask - 数据库片段