共计 2719 个字符,预计需要花费 7 分钟才能阅读完成。
一、蓝本 blueprint
-
说明
当我们的代码越来越复杂时,将所有的视图函数放在一个文件中很明显时不合适的;如果能够根据功能模块进行划分,存储在不同的文件中,蓝本就是为解决此问题而生的
-
使用
创建 user.py
from flask import Blueprint # 创建蓝本对象 user = Blueprint('user', __name__) # 添加路由 (视图函数) @user.route('/login/') def login(): return '欢迎登录'
manage.py
from flask import Flask from user import user # 导入蓝本对象 user app = Flask(__name__) # 注册蓝本对象 app.register_blueprint(user) app.register_blueprint(user, url_prefix='/user') if __name__ == '__main__': app.run()
-
访问
http://127.0.0.1:5000/login/
http://127.0.0.1:5000/user/login/
2、目录结构
project/
--|app.py 初始化整个应用的文件
--|configs 配置目录
--|--|__init__.py 声明 configs 为一个包
--|--|defaultConfig.py 默认配置模块
--|--|developmentConfig.py 开发环境配置模块
--|--|productionConfig.py 生产环境配置模块
--|--|testingConfig.py 测试配置模块
--|exts 加载第三方扩展库目录
--|--|__init__.py 声明 exts 为一个包
--|--|db.py 操作数据库的模块
--|myApp 包含整个应用文件目录
--|--|__init__.py 声明 myApp 为一个包
--|--|api 包含所有蓝本文件的目录
--|--|--|__init__.py 声明 api 为一个包
--|--|index.py 包含首页操作的视图蓝本文件
--|--|models 包含所有模型文件的目录
--|--|--|__init__.py 声明 models 为一个包
--|static 静态资源目录
--|--|img 图片文件
--|--|css css 样式文件
--|--|js js 文件
--|templates 模板目录
--|manage.py 工程启动文件
3、操作
-
myApp 应用
在工程目录下创建包目录 (目前起名为 myApp,以后视情况而修改)
-
api 路由视图
解决:flask 提供的解决方案是蓝图
在应用目录下创建名为 api 的包目录:
-
__init__.py
from .main import main
-
main.py
# 蓝图类 from flask import Blueprint main = Blueprint("main", __name__) @main.route('/') def hello_world(): return 'lucky is a good man'
-
在 app.py 文件中注册蓝图对象
-
-
exts 导出
作用:一般三方对象在该目录下定义
-
在工程目录下创建名为 exts 的包目录
-
__init__.py
作用:导出三方对象
示例:from exts.db import db
-
数据库对象
在 exts 目录下创建名为 db.py 文件
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy()
-
-
在 app.py 文件中加载三方对象
-
-
configs 配置文件
-
位置:在工程目录下创建名为 configs 的包目录
-
__init__.py
from .developmentConfig import DevelopmentConfig from .productionConfig import ProductiongConfig from .testingConfig import TestingConfig
-
defaultConfig.py 基本配置
class DefaultConfig(): SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:lucky@127.0.0.1:3306/lucky" SQLALCHEMY_TRACK_MODIFICATIONS = False
-
developmentConfig.py 开发配置
from configs.defaultConfig import DefaultConfig class DevelopmentConfig(DefaultConfig): DEBUG = True TESTING = False
-
productionConfig.py 生产配置
from configs.defaultConfig import DefaultConfig class ProductiongConfig(DefaultConfig): DEBUG = False TESTING = False
-
testingConfig.py 测试配置
from configs.defaultConfig import DefaultConfig class TestingConfig(DefaultConfig): DEBUG = False TESTING = True
-
在 app.py 文件中注册配置
-
-
models 模型
位置:在应用目录下创建名为 models 的包目录
说明:一个模型就是一个 py 文件
__init__.py
:导出所有的模型 -
app.py
位置:在工程目录下创建名为 app.py 的文件
from flask import Flask # 引入蓝图对象 from myApp.api import main from exts import db from configs import DevelopmentConfig from configs import ProductiongConfig from configs import TestingConfig def create_app(name): app = Flask(name) # 加载配置 app.config.from_object(DevelopmentConfig) # 加载三方对象 db.init_app(app) # 注册蓝图 app.register_blueprint(main) return app
-
manage.py 工程启动文件
位置:在应用目录下创建名为 manage.py 模块
from flask_script import Manager from app import create_app app = create_app(__name__) manager = Manager(app) if __name__ == '__main__': manager.run()