D:.Ihome
├─.idea
├─ihome
│ ├─api_1_0
│ │ └─__pycache__
│ ├─libs
│ ├─static
│ ├─utils
│ └─__pycache__
├─logs
└─__pycache__
和ihome同级的还有manage 和 config
manage:只负责启动文件,所以内部:
from ihome import create_app, db
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
# 创建flask的应用对象
app = create_app("develop")
manager = Manager(app)
Migrate(app, db)
manager.add_command("db", MigrateCommand)
if __name__ == "__main__":
manager.run()
config文件:
import redis
import mysql.connector
class Config:
"""配置信息"""
SECRET_KEY = "1"
# 数据库
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://root:mysql@127.0.0.1:3306/ihome"
SQLALCHEMY_TRACK_MODIFICATIONS = True
#redis数据库
REDIS_HOST = "127.0.0.1"
REDIS_PORT = 6379
# session配置
SESSION_TYPE = "redis"
SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
SESSION_USE_SIGNER = True #对cookie中的sessionid进行隐藏处理
PERMANENT_SESSION_LIFETIME = 86400 # session数据的有效期,单位秒
class DevelopmentConfig(Config):
"""开发模式配置信息"""
DEBUG = True
class ProductConfig(Config):
"""生产环境配置信息"""
pass
config_map = {
"develop": DevelopmentConfig,
"product": ProductConfig
}
放置代码的ihome 中的文件有:
-
用来初始化app的init函数
from flask import Flask from flask_sqlalchemy import SQLAlchemy import redis from flask_session import Session from flask_wtf import CSRFProtect import logging from logging.handlers import RotatingFileHandler from config import config_map # 数据库 db = SQLAlchemy() # 创建redis连接对象 redis_store = None #logging.error("xxxx") # 错误级别 logging.warn("") # 警告级别 logging.info("") # 消息提示级别 # 设置日志的记录等级 logging.basicConfig(level=logging.DEBUG) # 调试debug级 # 创建日志记录器,指明日志保存的路径,每个日志文件的最大大小,保存的日志文件个数上限 file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10) # 创建日志记录的格式 formatter = logging.Formatter("%(levelname)s %(filename)s:%(lineno)d %(message)s") # 为刚创建的日志记录器设置日志记录格式 file_log_handler.setFormatter(formatter) # 为全局的日志工具对象(flask app使用的)添加日志记录器 logging.getLogger().addHandler(file_log_handler) # 工厂模式 def create_app(config_name): """ 创建flask的应用对象 :param config_name:str 配置模式的名字 ("develop", "product") :return: instance """ app = Flask(__name__) # 根据配置模式的名字获取配置参数的类 config_class = config_map.get(config_name) app.config.from_object(config_class) # 使用app初始化db db.init_app(app) # 初始化redis工具 global redis_store redis_store = redis.StrictRedis(host=config_class.REDIS_HOST, port=config_class.REDIS_PORT) # 利用flask_session将session数据保存到redis中 Session(app) # 为flask补充csrf防护 CSRFProtect(app) # 注册蓝图 from ihome import api_1_0 app.register_blueprint(api_1_0.api, url_prefix="/api/v1.0") return app
-
负责写视图的蓝图控制文件和版本控制功能 api_1_0
-
api_1_0里面有init文件和函数书写文件
from flask import Blueprint # 创建蓝图对象 api = Blueprint("api_1_0", __name__) # 导入蓝图的视图 from . import index
-
负责函数功能书写的index文件
from .import api from ihome import db import logging from flask import current_app @api.route("/index") def index(): # logging.error("") # 错误级别 # logging.warn("") # 警告级别 # logging.info("") # 消息级别 # logging.debug("") #调试级别 current_app.logger.error("error msg") current_app.logger.error("error msg") return "index page" # 函数中的内容都为测试内容,无实际含义
-
将来通过复制源码安装的第三方包:libs
-
用来存放自制工具: utils
-
静态文件存放:static
-
以及存放log日志的 logs/ 文件夹。
最后再来复习一遍目录的结构:(图中没有包括manage和config的)
D:.
├─.idea
├─ihome
│ ├─api_1_0
│ │ └─__pycache__
│ ├─libs
│ ├─static
│ ├─utils
│ └─__pycache__
├─logs
└─__pycache__