阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Flask 项目工程拆分

441次阅读
没有评论

共计 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()

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计2719字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7803406
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...