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

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

你可能感兴趣的:(Flask创建工程项目结构)