Flask创建工程项目结构

Flask创建工程项目结构

  1. 创建管理所有项目逻辑代码的包apps

    1545875462986.png

并在init.py文件中编写生成定制化app的工厂函数

from flask import Flask


def get_cms_app():
    # 实例化实现了wsgi接口功能的flask对象
    app = Flask(__name__)
    return app
  1. 在apps中创建config.py配置文件,为不同环境都创建一个配置类,并创建任意个你需要对外的接口,比如生产环境部署接口,开发时使用的接口

    1545875853707.png

配置文件config.py中的代码

class BaseDevConfig(object):
    DEBUG = True
    # 测试开发时共有的一些配置...


class CMSDevConfig(BaseDevConfig):
    # 开发CMS系统时定制化的一些配置
    pass


class CMSProConfig(object):
    # CMS系统正式部署时根据自己的需要的一些配置,例如mysql配置,redis配置等等,
    pass

cms_app.py开发时使用的接口,因为写了定制化的配置类,现在我们修改前面的代码。

init.py文件

from flask import Flask


def get_cms_app(config_obj: str):
    # 实例化实现了wsgi接口功能的flask对象
    app = Flask(__name__)
    # 增加app系统配置
    app.config.from_object(config_obj)
    return app

cms_app.py文件的代码

from apps import get_cms_app

# 获取定制化的app,这里传入config.py文件中指定的类名,生成的app将使用CMSDevConfig里面的配置
cms_app = get_cms_app("apps.config.CMSDevConfig")

# 启动flask自带的调试web服务器
if __name__ == '__main__':
    cms_app.run()
  1. 根据自己项目的规划,创建一个或多个蓝图包,里面管理视图函数,比如写一个web系统,你需要写一个和前端交互的逻辑代码包(apis),还需要写一个后台管理逻辑代码包(cms)。

    项目架构

    1545879051799.png

cms/init.py文件里面写蓝图注册

from flask import Blueprint

# 实例化蓝图对象
cms_bp = Blueprint("cms", __name__)
  1. 接下来可以在响应蓝图包中开发自己需要的功能,这里就以最简单的例子展示,为了使代码分离,可以在蓝图包中新创建需要的视图函数,项目架构

    1545879668381.png

user_view.py中代码

from . import cms_bp


@cms_bp.route("/")
def index():
    return "hello world"

将该视图函数导入到cms/init.py中间中,这样蓝图才能找到这个函数

cms/init.py中的代码

from flask import Blueprint

# 实例化蓝图对象
cms_bp = Blueprint("cms", __name__)

from . import user_view

再将蓝图注册到app上,这样app才能激活蓝图中的rule

app/init.py代码

from flask import Flask


def register_cms_bp(app):
    from apps.cms import cms_bp
    # 将蓝图注册到app上
    app.register_blueprint(cms_bp)


def get_cms_app(config_obj: str):
    # 实例化实现了wsgi接口功能的flask对象
    app = Flask(__name__)
    # 增加app系统配置
    app.config.from_object(config_obj)
    # 将导入语句等等封装成函数是为了导入顺序的正确
    register_cms_bp(app)
    return app

至运行cms_app.py文件就能通过127.0.0.1:5000/访问到index视图函数返回的数据

  1. 最后在添加项目常需要的静态文件夹,模板文件夹,模型层,数据验证层,通用函数层等等。

    1545881010999.png

至此项目的大概架构就搭建完成,后期根据项目的需要,可以适当的更改。如果大家觉得还行,想更细致的了解开发和实际部署时项目的架构,可以评论或私信我,我会当项目编写完成后,将实际的代码目录贴出来,并将重新开帖子把实际部署到服务器的过程写出来。如果大家有更好的项目构建,也希望大家可以给小弟我分享分享,感谢。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,224评论 22 257
  • flask是python的一个web应用框架,django很多人听过,flask比较少见,连创始人一开始写出来只是...
    思而忧阅读 2,954评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • 已悄然度过两个十年 第三个十年又要开始 慢慢,慢慢没有感觉 十年之前 我还是我,你还是你 不变的是,你的样貌 十年...
    东南乔阅读 279评论 2 0
  • 今天陪妞写作业,她一副为日本鬼子干活的样子,陪作业的妈伤不起,想吐血… 于是,我跟她开展了如下对话: 你想成为作业...
    朵苗妈妈阅读 233评论 0 0