5.(后端)拆分项目结构

1.项目目录介绍

在这里插入图片描述

2.主文件

功能:用于运行项目,是整个项目的主要收集者。

# manager.py
# 只负责运行项目

# 引入db
from flask_shop import create_app,db
# MigrateCommand migrate的命令
from flask_migrate import Migrate,MigrateCommand
# 管理:方便数据库的同步
from flask_script import Manager

app = create_app('develop')

# migrate和同步数据库配置
manager = Manager(app)
Migrate(app,db)
manager.add_command('db',MigrateCommand)

if __name__ == "__main__":
    app.run()

1.1主文件的初始化文件

此文件的作用就是创建flask对象和sqlalchemy对象,传递给主文件

#flask_shop/__init__.py
# 用于初始化app对象
from flask import Flask
# 导入数据库
from flask_sqlalchemy import SQLAlchemy
# 获取是哪种开发模式
from config import config_map

# 先不连接app对象,否则报错,在下面创建app对象时默认连接数据库,就可以了
db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    # 获取到字典中的哪种类,获取到对应的类名,再给到from_object获取到对应的参数
    obj = config_map.get(config_name)
    # 加载数据库到Flask中
    app.config.from_object(obj)
    # 默认连接数据库
    db.init_app(app)

    # 注册用户的蓝图
    # 不可以把这一行放到开头,否则会执行回init,再引用回来会需要创建db,产生报错
    from flask_shop.user import user
    app.register_blueprint(user)

    return app

1.2主文件的参数文件

此文件的作用,存放配置信息,传递给主文件的初始化文件。

# flask_shop/config.py
# 用于存放配置信息

# 用于导入加密字符
import os 

# 配置MySQL参数
class Config:
    MYSQL_DIALECT = 'mysql' #使用哪个数据库
    MYSQL_DIRVER = 'pymsql' #选择驱动
    MYSQL_NAME = 'root'     #用户名
    MYSQL_PWD = 'root'      #密码
    MYSQL_HOST = 'localhost'#主机名
    MYSQL_PORT = 3306       #端口号
    MYSQL_DB = 'shop_env'   #数据库名
    MYSQL_CHARSET = 'utf8mb4'#编码格式

    SQLALCHEMY_DATABASE_URI = f'{MYSQL_DIALECT}+{MYSQL_DIRVER}://{MYSQL_NAME}:{MYSQL_PWD}@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DB}?charset={MYSQL_CHARSET}'
    # 默认设置为true,当数据发生变化,会发送一个信号。
    SQLALCHEMY_TRACK_MODIFICATIONS = True
    # 设置加密字符
    SECRET_KEY = os.urandom(16)
    
# 开发模式,开启debug模式
class DevelopmentConfig(Config):
    DEBUG = True
# 生产模式,关闭debug模式
class ProductionConfig(Config):
    pass

config_map={
    'develop':DevelopmentConfig,
    'product':ProductionConfig
}

3.用户蓝图文件

3.1用户文件夹的蓝图文件

用于导入蓝图对象,处理业务逻辑和创建视图

# flask_shop/user/view.py
# 此文件用于处理关于用户的业务逻辑,视图都写在这

# 导入用户的蓝图对象,这里的user不是文件,是在user.py定义好的蓝图对象
from flask_shop.user import user
from flask_shop import db
@user.route("/")
def index():
    return "Hello user"

3.2用户文件夹的初始化文件

创建蓝图,导入user中视图文件和路由

# flask_shop/user/__init__.py
# user用于管理用户的蓝图

from flask import Blueprint
# 创建蓝图,记得要注册
#定义好传递给的变量 蓝图对象名称      前缀名                  
user = Blueprint('user', __name__, url_prefix='/user')

from flask_shop.user import view

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值