lask简单配置信息(2)

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__

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值