使用 Flask 蓝图分割 Web 应用程序结构 |易数数码

浏览面向初学者的 Flask 蓝图,您可以学习如何在 Web App 或 DApp 开发的早期阶段进行构建

在大多数情况下,我们需要应用相同的结构、内容或数据集,只是语言和本地化设置不同。熟悉的示例是子文件夹、本地化。

为了高效地完成它,我会为初学者介绍 Flask 蓝图,您可以在 Web App 或 DApp 开发的早期阶段学习如何构建,从而简化之后的所有工作。

目录:使用 Flask 蓝图分段 Web 应用程序结构

什么是 Flask 蓝图

Flask Blueprint 是 Fl​​ask Web 框架提供的一项功能,它允许您将 Flask 应用程序组织成可重用的组件或模块。它提供了一种定义和分组相关视图、模板、静态文件和其他应用程序组件的方法,帮助您创建模块化和可扩展的应用程序。

Flask 蓝图充当定义一组路由和相关功能的蓝图或模板。它提供了一种将应用程序的不同部分(例如路由、模板、静态文件和错误处理程序)组织为逻辑单元的方法。

通过使用 Flask 蓝图,您可以将应用程序划分为更小、更易于管理的组件。每个蓝图都可以有自己的一组路由和关联的函数。然后可以将这些蓝图注册到 Flask 应用程序以使其可访问。

使用 Flask Blueprint 的一些好处包括:

  1. 模块化组织:蓝图使您能够将应用程序分解为更小的、可重用的模块,从而更易于管理和维护。
  2. 协作开发:多个开发人员可以同时处理不同的蓝图,从而实现更好的协作和关注点分离
  3. URL 前缀:可以为蓝图分配 URL 前缀,从而更轻松地使用公共基本 URL 定义路由。
  4. 模板和静态文件继承:蓝图可以定义自己的模板和静态文件,这些模板和静态文件可以被主应用程序或其他蓝图继承。
  5. 错误处理:蓝图可以定义自己的错误处理程序,允许在应用程序的特定部分进行自定义错误处理。

层和文件夹结构

与Blueprint结构相比,基本上正常的做法需要开发人员在根目录中添加三个必备文档,分别是app.py和templates文件夹中的html脚本以及statics中的其余材料、CSS或JS。两个文件夹,app,py 位于根文件夹中。

相反,使用蓝图时,请确保任何前缀层或子文件夹脚本不能放入根文件夹中。仅保留 app.py 和 create_app() 函数,以便 Flask 服务器可以正确检测到激活脚本。

对于每个蓝图,它都需要上面提到的三个必备元素(静态文件夹、模板文件夹和分支脚本)。

分支蓝图配置

文件夹和路径准备好后,我们就可以开始配置蓝图了。在分支方面,我们需要导入flask和blueprint来创建一个具有可选模块和信息的对象。示例如下:

From flask import Blueprint

JPSiteScript = Blueprint ( 'japaneseSite' , __name__ , template_folder = "templates" , static_folder = 'static/assets' , static_url_path = '/static/assets' )

然后,我们可以继续使用 japaneseSite 而不是没有 Blueprint 的应用程序来设置路由,如下所示

# Define routes and functions

@japaneseSite.route('/login')

def login():

return 'Login page'

主应用程序配置

在主 app.py 中,我们还需要告诉 Flask 我们有多少个蓝图以及它们是什么。所以这里有一种注册每个蓝图的方法

From abc import JPSiteScript

app.register_blueprint(JPSiteScript, url_prefix='/jp')

我想详细说明 url_prefix,特别是在这里,因为它是一种使用它来设置多个国家/地区站点结构的方法。我们不需要在每个Blueprint中一一设置。 Url_prefix 表示来自该特定蓝图的所有路由都将使用 /jp 作为 URL 路径中的子文件夹。超级方便。

使用 Flask Blueprint 的 Web App 结构的 Python 脚本示例(包括使用 Blueprint 的数据库集成、用户身份验证集成)

如果您对第 82 章 – 使用 Flask 蓝图分段 Web 应用程序结构感兴趣,请通过添加消息“Chapter 82+ Flask Blueprint 设置的完整脚本”来订阅我们的新闻通讯。当最新的应用程序脚本上线时,我们会向您发送脚本。

我希望您喜欢阅读第 82 章 – 使用 Flask 蓝图分段 Web 应用程序结构。如果您这样做了,请通过执行下列操作之一来支持我们,因为这总是对我们的频道有所帮助。