学习Flask之七、大型应用架构

文章讲述了在Flask中如何组织和管理大型应用,包括项目结构的设定,如app、migrations、tests和venv目录的用途。提到了配置选项的层次化管理和应用工厂模式,以及如何使用blueprint来处理路由和错误。此外,还讨论了单元测试、启动脚本、requirements文件以及数据库的配置和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习Flask之七、大型应用架构

尽管存放在单一脚本的小型网络应用很方便,但是这种应用不能很好的放大。随着应用变得复杂,维护一个大的源文件会出现问题。不像别的网络应用,Flask没有强制的大型项目组织结构。构建应用的方法完全留给开发者。本章,呈现一种组织大型应用到包或模块的方法。

这种结构用于维护本书余下的例子。

项目结构 

Example 7-1 展示Flask应用的基础布局

Example 7-1. 基础的多文件Flask应用架构

|-flasky

|-app/

|-templates/

|-static/

|-main/

|-__init__.py

|-errors.py

|-forms.py

|-views.py

|-__init__.py

|-email.py

|-models.py

|-migrations/

|-tests/

|-__init__.py

|-test*.py

|-venv/

|-requirements.txt

|-config.py

|-manage.py

这个结构有4个顶层目录:

• Flask应用通常放在名为app的包里。

• migrations目录包含数据库迁移脚本,如前所述。

• Unit tests 放在tests包里。

• venv目录包含Python虚拟环境,如前所述。

也有一些新的文件:

• requirements.txt列出了依赖包以便在不同的计算机产生相同的虚拟环境。

• config.py存贮配置设置。

• manage.py启动应用和其它应用任务。

为了帮助你理解这个结构,下一节描述如何将hello.py应用转换到这个结构。

配置选项

应用通常需要多种配置设置。最好的例子是在开发、测试和生产过程中需要不同的数据库,以免相互干扰。 不像hello.py里用简单的字典结构配置,而是使用一个层级的配置类。

Example 7-2展示了config.py文件。

Example 7-2. config.py: Application configuration

import os

basedir = os.path.abspath(os.path.dirname(__file__))

class Config:

SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'

SQLALCHEMY_COMMIT_ON_TEARDOWN = True

FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'

FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'

FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN')

@staticmethod

def init_app(app):

pass

class DevelopmentConfig(Config):

DEBUG = True

MAIL_SERVER = 'smtp.googlemail.com'

MAIL_PORT = 587

MAIL_USE_TLS = True

MAIL_USERNAME = os.environ.get('MAIL_USERNAME')

MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')

SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \

'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class TestingConfig(Config):

TESTING = True

SQLALCHEMY_DATABASE_URI = os.environ.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lishaoan77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值