1.新建文件夹
2.文件夹中配置ihome包、config.py文件、manage.py文件、logs日志文件夹、demo.py日志文件
3.ihome包中配置api_1_0包、utils文件夹、models.py文件
2.1 config.py配置文件写入
import redis
import logging
class Config(object):
"""工程配置信息"""
SECRET_KEY = "EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA"
DEBUG = True
# 数据库的配置信息
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123@127.0.0.1:3306/ihome2"
SQLALCHEMY_TRACK_MODIFICATIONS = True
# redis配置
REDIS_HOST = "127.0.0.1"
REDIS_PORT = 6379
# session 配置
SESSION_TYPE = "redis" # 指定 session 保存到 redis 中
SESSION_USE_SIGNER = True # 让 cookie 中的 session_id 被加密签名处理
SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT) # 使用 redis 的实例
PERMANENT_SESSION_LIFETIME = 86400 # session 的有效期,单位是秒
LOG_LEVEL = logging.DEBUG
class DevelopementConfig(Config):
"""开发模式下的配置"""
DEBUG = True
LOG_LEVEL = logging.INFO
# 容联云配置项
ACC_ID = '8a216da881ad975401821a40f1891a59'
ACC_TOKEN = 'a707bc4********bc80'
APP_ID = 'a707bc46fff4472896f7f283b75bbc80'
class ProductionConfig(Config):
"""生产模式下的配置"""
DEBUG = False
LOG_LEVEL = logging.ERROR
# 定义配置字典字典
config = {
"development": DevelopementConfig,
"production": ProductionConfig
}
2.2、manage.py中配置
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from iHome import create_app, db
app = create_app('development')
# 1. 创建运行的 管理器对象
manager = Manager(app)
# 2. 设置 app 和 数据库 迁移
Migrate(app, db)
# 3. 设置 终端 迁移的指令
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
2.3、demo.py文件写入日志
import logging
from logging.handlers import RotatingFileHandler
logging.basicConfig(level=logging.DEBUG) # 调试debug级
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
formatter = logging.Formatter('%(levelname)s-%(asctime)s-%(filename)s:%(lineno)d %(message)s')
# 为刚创建的日志记录器设置日志记录格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象(flask app使用的)添加日志记录器
logger = logging.getLogger()
logger.addHandler(file_log_handler)
if __name__ == '__main__':
for i in range(2000):
logger.debug('测试 自定义的日志格式')
3.1、_init_.py文件写入
import redis
from flask import Flask
from flask_session import Session
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import CSRFProtect
from config import config
# Mysql数据库的实例化
db = SQLAlchemy()
# CSRF 防护
csrf=CSRFProtect()
redis_store = None
def setup_logging(config_class):
import logging
from logging.handlers import RotatingFileHandler
logging.basicConfig(level=config_class.LOG_LEVEL) # 调试debug级
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
formatter = logging.Formatter('%(levelname)s-%(asctime)s-%(filename)s:%(lineno)d %(message)s')
# 为刚创建的日志记录器设置日志记录格式
file_log_handler.setFormatter(formatter)
# 为全局的日志工具对象(flask app使用的)添加日志记录器
logger = logging.getLogger()
logger.addHandler(file_log_handler)
def create_app(config_name):
"""
封装 实例化的 app 对象
:return:
"""
# 实例化 app 应用- 动态导包的快捷键 option+enter
app = Flask(__name__)
# 读取配置的类
config_class = config[config_name]
# 根据配置类 读取对应环境的配置
app.config.from_object(config_class)
# Mysql数据库的实例化
db.init_app(app)
# Redis 实例化
global redis_store
redis_store = redis.StrictRedis(host=config_class.REDIS_HOST,port=config_class.REDIS_PORT)
# CSRF 防护
# csrf.init_app(app)
# Session
Session(app)
# 跨域
# CORS(app)
# 注册 蓝图
from iHome import api_1_0
app.register_blueprint(api_1_0.api, url_prefix="/api/v1.0")
return app
3.2、constants.py配置
# -*- coding:utf-8 -*-
# 图片验证码Redis有效期, 单位:秒
IMAGE_CODE_REDIS_EXPIRES = 300
# 短信验证码Redis有效期,单位:秒
SMS_CODE_REDIS_EXPIRES = 300
# 七牛空间域名
QINIU_DOMIN_PREFIX = "http://rq0182bau.hd-bkt.clouddn.com/"
QINIU_AK = 'xfhKQ7*************RBkk2g'
QINIU_SK = 'ATQjn6ws58************0GYq5Q9HD9'
# 城区信息redis缓存时间,单位:秒
AREA_INFO_REDIS_EXPIRES = 7200
# 首页展示最多的房屋数量
HOME_PAGE_MAX_HOUSES = 5
# 首页房屋数据的Redis缓存时间,单位:秒
HOME_PAGE_DATA_REDIS_EXPIRES = 7200
# 房屋详情页展示的评论最大数
HOUSE_DETAIL_COMMENT_DISPLAY_COUNTS = 30
# 房屋详情页面数据Redis缓存时间,单位:秒
HOUSE_DETAIL_REDIS_EXPIRE_SECOND = 7200
# 房屋列表页面每页显示条目数
HOUSE_LIST_PAGE_CAPACITY = 2
# 房屋列表页面Redis缓存时间,单位:秒
HOUSE_LIST_REDIS_EXPIRES = 7200
3.3、model.py配置模型类
from . import db
class BaseModel(object):
"""模型基类,为每个模型补充创建时间与更新时间"""
create_time = db.Column(db.DateTime, default=datetime.now) # 记录的创建时间
update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) # 记录的更新时间
4.1、api_1_0中的_init_.py文件写入
from flask import Blueprint
from flask_cors import CORS
api = Blueprint('api_1_0', __name__)
CORS(api)
from . import index,verifycode,passport,profile