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()

最新文章

  1. event.stopPropagation()与event.preventDefault()
  2. 基于HT for Web 3D技术快速搭建设备面板
  3. linux pep8 检查工具
  4. SQL——神奇代码1之Update
  5. [python]初探socket
  6. register_shutdown_function
  7. Android获得线性渐变某点的颜色
  8. 【年终分享】彩票数据预测算法(一):离散型马尔可夫链模型实现【附C#代码】
  9. 【转载】Stack Overflow: The Architecture - 2016 Edition
  10. iOS开发概述UIkit动力学,讲述UIKit的Dynamic特性,UIkit动力学是UIkit框架中模拟真实世界的一些特性。
  11. js的函数返回值
  12. Head First 设计模式 第1章 策略模式
  13. Mysql元数据生成Hive建表语句注释脚本
  14. habse Region server挂掉
  15. MTK6261 11C之Init Analysis【手记】
  16. QT:基本知识(一);
  17. 背包DP 存在异或条件的状态转移问题
  18. 历届试题 大臣的旅费-(树的直径+dfs)
  19. [转]PowerDesigner中name和code取消自动关联
  20. python之函数的作用域

热门文章

  1. 在java中使用SFTP协议安全的传输文件
  2. 在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足。....”
  3. object-fit 详解
  4. 手写一个HTTP框架:两个类实现基本的IoC功能
  5. 佛山6397.7539(薇)xiaojie:佛山哪里有xiaomei
  6. Convert to Ones CodeForces(超水题)
  7. composer 阿里云加速 转
  8. gin教程
  9. CentOS7使用firewalld管理防火墙
  10. log4cplus库的properties文件配置