Flask 框架设计模式

Flask

框架设计模式

所有的代码都是使用 python语言实现, 在项目开发过程中,将一些 相似的功能 封装在一起, 得到一个半成品的项目, 称为 框架

  • django就是 使用 python 语言实现的 , 遵循 MVC 模式的 一个框架, 当然,django中 称为 MVT
  • flask 也是 python实现的 遵循 MVC模式的框架

MVC

  • M: 模型类,和数据库交互
  • V: 视图, 展示给用户看,与用户进行页面交互
  • C: 控制器, 负责连接 模型类和视图,实现逻辑处理

MVT

  • M: 模型类,和数据库交互
  • T: 模板, 展示给用户看,与用户进行页面交互
  • V: 视图, 负责连接 模型类和视图,实现逻辑处理

开发模式

现在,主流的开发已经不是纯粹的 后端说了算,而是

  • 后端 提供接口: 实现 业务的处理以及数据的操作
  • 前端 提供页面: 实现 页面的渲染,以及 与用户的交互

只是 将 后端服务,使用 flask实现,前端的页面仍然是 Vue实现

代码构建

Flask 小而精, django 大而全


小项目可以使用 单文件完成, 而 功能庞大的项目不适用单文件,需要对项目结构进行合理划分

项目构造

|--flask01 # 项目目录
	|-- app
	|	|-- __init__.py  # 定义工厂函数,导入配置文件和第三方插件,生成 APP,
	|   |-- settings.py  # 项目的配置文件
	|   |-- extensions.py # flask只提供核心功能,其他功能需要借助 第三方的 插件
    |-- manage.py  # 负责 管理项目,实现 项目的 启动、模型类的迁移,以及数据表的生成

settings.py

项目的配置文件

class Config(object):
    DEBUG = True  # 打开调试模式
    #  mysql://用户名:密码@IP地址:端口号/库名
    SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@127.0.0.1:3306/flask01'
    # 是否追踪 mysql 修改的信号量
    SQLALCHEMY_TRACK_MODIFICATIONS = False

extensions.py

项目使用的第三方插件

from flask_sqlalchemy import SQLAlchemy  # 链接  flask项目和  mysql数据库
from flask_migrate import Migrate  # 根据模型类,生成迁移文件,生成表
from flask_cors import CORS  # 实现后端跨域

# 有的环境无法安装 mysqlclient,不需要下面的配置
# 使用 pymysql链接数据库,需要多两步配置
import pymysql

pymysql.install_as_MySQLdb()

db = SQLAlchemy()  # 链接mysql数据库
migrate = Migrate()
cors = CORS()


def config_extensions(app):
    """为了防止 app没有生成,从而 挂载插件失败,
    因此,定义函数,创建app成功,再将app作为参数传入"""
    db.init_app(app)
    migrate.init_app(app, db=db)
    cors.init_app(app)

__init__.py

定义工厂函数,导入配置文件和第三方插件,生成并返回app

from flask import Flask
from .settings import Config
from .extensions import config_extensions

# 工厂函数:通过一个函数,创建一个 flask  app
def create_app():
    # 1. 创建app
    app = Flask(__name__)
    # 2. 让app加载配置项
    app.config.from_object(Config)
    # 3. 挂载第三方插件
    config_extensions(app)

    return app

manage.py

项目的管理文件

from flask_script import Manager, Server
from flask_migrate import MigrateCommand
from app import create_app


# 1. 利用工厂函数生成app
app = create_app()
# 2. 创建manage对象,管理APP
manage = Manager(app)

# 3.1 自定义  启动服务的命令
manage.add_command('runserver', Server())
# 3.2 自定义  模型类的迁移命令
manage.add_command('db', MigrateCommand)

if __name__ == "__main__":
    # 4. 项目启动需要使用manage 对象,而不是 app
    manage.run()

项目设计, 可以自定义,但是 建议: 命名见名识义, 结构清晰明了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式Flash的状态模式是一种用于管理Flash存储器的状态转换的设计模式。它可以帮助开发人员更好地组织和管理Flash存储器的读写操作,提高代码的可维护性和可扩展性。 在嵌入式系统中,Flash存储器通常被用来存储程序代码、配置数据等信息。Flash存储器的读写操作需要按照一定的顺序和条件进行,而且在不同的状态下可能有不同的操作方式。为了简化代码的编写和维护,可以使用状态模式来管理Flash存储器的状态转换。 状态模式的核心思想是将不同的状态封装成独立的类,并定义一个公共的接口来统一它们的行为。在Flash存储器的状态模式中,通常会定义以下几个角色: 1. 状态接口(State Interface):定义了Flash存储器状态的公共接口,包括读取、写入等操作方法。 2. 具体状态类(Concrete State Class):实现了状态接口,并根据具体的状态进行相应的操作。例如,可以定义一个"读取状态"类和一个"写入状态"类来分别处理读取和写入操作。 3. 环境类(Context Class):维护了当前Flash存储器的状态,并提供了对外的接口供外部调用。在状态模式中,环境类会持有一个状态对象的引用,并根据不同的状态调用相应的方法。 使用嵌入式Flash的状态模式可以使代码结构更清晰,易于理解和维护。当需要增加新的状态或修改现有状态时,只需要添加或修改相应的状态类,而不需要修改其他代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值