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