app级别

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
# SQLAlchemy 类实例对象的创建一定要在引用蓝图之前,因为db会在各个蓝图中调用进行数据库操作
db = SQLAlchemy()
from sansa.views.account import account
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand def create_app():
"""
创建app
:return:
"""
app = Flask(__name__)
app.config.from_object("settings.Development")
# 注册到当前app下的蓝图都要执行预处理函数b1
"""
解释:
普通方式写预处理函数形式:
@app对象/蓝图对象.before_request
def xxx():
pass @app对象/蓝图对象.before_request 执行的本质就是:
pp对象/蓝图对象.before_request(xxx),即加括号执行 pp对象/蓝图对象.before_request 函数,并将装饰器下方函数的内存地址作为参数传入,
内部将传入的被装饰函数的内存地址添加至 预处理函数列表中。请求到来之后,执行上下文流程,在执行视图函数之前循环预处理函数列表并执行
每一个预处理函数。
通过上面的分析我们还可以发现,app调用了before_request就会将被装饰函数添加至app的预处理函数中,蓝图对象调用了before_request就会将
被装饰函数添加至视图的预处理函数中
"""
app.before_request(b1)
# 初始化db,读取app中关于数据库连接的配置信息,一定要放在导入配置之后
db.init_app(app)
app.register_blueprint(account)
# 创建项目管理器
manager = Manager(app)
# 创建数据库迁移管理实例
migrate = Migrate(app,db)
# 为管理器添加一个db的命令
manager.add_command("db",MigrateCommand)
return manager def b1():
print("app级别的预处理函数")

蓝图级别

from flask import Blueprint
from sansa import db
from sansa.models import Users
account = Blueprint("account",__name__) @account.before_request
def b2():
print("我是蓝图级别的预处理函数") @account.route('/login',methods=["GET"])
def login():
db.session.add(Users(name='王超'))
db.session.commit()
# 释放当前会话的连接
db.session.remove()
return "Login"

最新文章

  1. 慕课网__HTML5 存储
  2. JSTL标签库的使用
  3. 解决Web部署 svg/woff/woff2字体 404错误
  4. UOJ52——【UR #4】元旦激光炮
  5. windows下cmd操作
  6. Asp.net MVC 之过滤器
  7. openldap复制
  8. JAVA的第一个程序
  9. 浅谈Androidclient项目框架
  10. angularjs sortbale
  11. UEP-时间的比较
  12. JavaEE Servlet 核心方法及生命周期
  13. python学习笔记1-python相关应用套件
  14. Linux常用命令——关机重启命令
  15. ASP.NET的checkboxlist,RadioButtonList,FileUpload,image控件的综合使用
  16. 清除wnTKYg 这个挖矿工木马的过程讲述
  17. 分支结构-Switch
  18. svn下已add文件如何忽略
  19. 树莓派实现远程下载(apache2+aria2+webui-aria2)
  20. Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException

热门文章

  1. geoserver 文件系统
  2. 全基因组测序 从头测序(de novo sequencing) 重测序(re-sequencing)
  3. 用pyqt5做一个能python程序能插入图片的ide
  4. 常见sql for oracle
  5. JavaScript修改注册表
  6. pyspider示例代码六:传递参数
  7. $.fn.extend 和$.extend函数
  8. bitset相关
  9. Navicat for oracle cannot load OCI DLL
  10. UESTC 486 Good Morning (水题+坑!)