今日内容概要
内容详细
1、请求扩展
类比django中间件中的process_request,在请求收到之前绑定一个函数做一些事情
from flask import Flask, request, render_template
app = Flask(__name__)
@app.before_request
def before():
print("我执行了1111")
@app.after_request
def after(response):
print(response)
print("请求走了1111")
return response
@app.before_first_request
def first():
print("我的第一次")
@app.teardown_request
def teardown(e):
print(e)
print("我是teardown")
@app.errorhandler(404)
def err_404(arg):
print(arg)
return render_template('404.html')
@app.errorhandler(500)
def err_500(arg):
print(arg)
return render_template('500.html')
@app.template_global()
def add(a1, a2):
return a1 + a2
@app.template_filter()
def add2(a1, a2, a3):
return a1 + a2 + a3
@app.route('/')
def index():
l = [1, 2, 4]
print(l[9])
print("我是视图函数")
return "hello web"
@app.route("/home")
def home():
return render_template('home.html')
if __name__ == '__main__':
app.run()
2、蓝图
现在项目都是单个py文件--》想划分目录--》自己定制目录结构--》app经常用---》各个文件中导来导去---》出现循环引入问题
user = Blueprint('user', __name__)
@user.route('/index')
app.register_blueprint(user)
pro_flask
-pro_flask
-__init__.py
-statics
-templates
-views
account.py
user.py
blog.py
-run.py
pro_flask
-pro_flask
__init__.py
admin
__init__.py
static
templates
models.py
views.py
web
__init__.py
static
templates
views.py
run.py
3、g对象
django中间件中,假设想放到request中一个数据
request.name="lqz"
rerquest.context['name']='lqz'
rerquest.context['method']='nb'
到视图函数中,就可以取出来
g只针对于当次请求
session针对于多次请求
from flask import Flask, request, g
app = Flask(__name__)
@app.route('/')
def index():
print("我是视图函数")
g.a = 1
g.b = 3
print(add())
return "hello web"
@app.route('/home')
def home():
g.a = 3
g.b = 5
print(add())
return "hello home"
def add():
return g.a + g.b
if __name__ == '__main__':
app.run()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现