Flask-Cache
- pip install flask-caching安装
- flask_cache初始化
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_caching import Cache
db = SQLAlchemy()
migrate = Migrate()
cache = Cache(config={
'CACHE_TYPE': 'simple'
})
def init_exts(app):
db.init_app(app=app)
migrate.init_app(app=app, db=db)
cache.init_app(app=app)
@blue.route('/')
@cache.cached(timeout=20)
def index():
print('Index2')
print('index视图函数中:', g.star)
time.sleep(5)
return 'index2'
钩子
- 钩子或叫钩子函数,是指在执行函数和目标函数之间挂载的函数,框架开发者给调用方提供一个poit-挂载点,是-种AOP切面编程思想。
@blue.before_request
def before():
print('before_request')
ip = request.remote_addr
if cache.get(ip):
return '小伙子,别爬了!'
else:
cache.set(ip, 'value', timeout=1)
Flask内置对象
from flask import Blueprint, request, render_template, session, g, current_app
g.star = '杰伦'
print(g.star)
print(current_app)
print(current_app.config)
配置template和static
from flask import Flask
from .views import blue
from .exts import init_exts
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR:', BASE_DIR)
def create_app():
static_folder = os.path.join(BASE_DIR, 'static')
template_folder = os.path.join(BASE_DIR, 'templates')
app = Flask(__name__, static_folder=static_folder,
template_folder=template_folder)
app.register_blueprint(blueprint=blue)
db_uri = 'sqlite:///sqlite3.db'
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
init_exts(app=app)
return app