10before_request钩子函数
2024-10-09 20:17:18
1,什么是钩子函数?
就是运行别人前都得先运行他:
from flask import Flask app = Flask(__name__) @app.route('/')
def hello_world():
return 'Hello World!' @app.before_request
def bf():
print("运行任何程序前都要先运行我,哈哈!") if __name__ == '__main__':
app.run()
2,应用在哪?
比如在网站中检查是否为登陆状态,否则应跳转到登陆界面:
from flask import Flask,render_template,g,url_for,request,redirect,session
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) @app.route('/')
def hello_world():
# print("index")
return 'index!' @app.route('/login/' ,methods=['GET','POST'])
def login():
# print("login")
if request.method == "GET":
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
if username == "1" and password == "1":
session['username'] = "1"
return 'Success to login in!'
else:
return redirect(url_for('login')) @app.route('/edit/')
def edit():
##1和 #2都是一样的意思,但是1更方便,hasattr() 函数用于判断对象是否包含对应的属性。
if hasattr(g,'username'): #1
# if session.get('username') == "1": #2
return 'success to edit'
else:
return redirect(url_for('login')) # before_request:在请求之前执行的,在视图函数执行之前执行的。
# before_request只是一个装饰器,他可把要设置为钩子函数的代码放到视图函数执行之前来执行。
@app.before_request
def my_before_request():
print('hw')
# 有username证明用户是登陆状态
if session.get('username'):
g.username = session.get('username') #g?
# 相当于在每一个视图函数(如‘/’,/login/执行前都会执行这个函数。) if __name__ == '__main__':
app.run()
最新文章
- event.stopPropagation()与event.preventDefault()
- 基于HT for Web 3D技术快速搭建设备面板
- linux pep8 检查工具
- SQL——神奇代码1之Update
- [python]初探socket
- register_shutdown_function
- Android获得线性渐变某点的颜色
- 【年终分享】彩票数据预测算法(一):离散型马尔可夫链模型实现【附C#代码】
- 【转载】Stack Overflow: The Architecture - 2016 Edition
- iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。
- js的函数返回值
- Head First 设计模式 第1章 策略模式
- Mysql元数据生成Hive建表语句注释脚本
- habse Region server挂掉
- MTK6261 11C之Init Analysis【手记】
- QT:基本知识(一);
- 背包DP 存在异或条件的状态转移问题
- 历届试题 大臣的旅费-(树的直径+dfs)
- [转]PowerDesigner中name和code取消自动关联
- python之函数的作用域
热门文章
- 在java中使用SFTP协议安全的传输文件
- 在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足。....”
- object-fit 详解
- 手写一个HTTP框架:两个类实现基本的IoC功能
- 佛山6397.7539(薇)xiaojie:佛山哪里有xiaomei
- Convert to Ones CodeForces(超水题)
- composer 阿里云加速 转
- gin教程
- CentOS7使用firewalld管理防火墙
- log4cplus库的properties文件配置