2023-04-15 03:41:12
Flask官方文档学习--从零开始解读(二)
一、项目结构(Project Layout)
在Flask项目创建后,合理的项目结构规划至关重要。使用Pycharm等IDE创建项目时,除了自动生成的static(存放静态文件如CSS、JS、图片等)、templates(存放HTML模板文件)文件夹以及app.py文件外,还需根据项目需求规划好各个模块。良好的项目结构有助于代码的组织和维护。
二、应用配置(Application Setup)
Flask实例化后,通常需要全局调用对象的一些配置函数。为了方便管理,建议创建一个工厂函数来统一管理这些配置。这个工厂函数通常放在项目目录下的__init__.py文件中。
为了更加灵活地管理配置,可以在项目根目录下创建一个settings.py文件,将常用的配置封装成一个Config类。在工厂函数中,通过app.config.from_object(settings.Config)来加载这些配置。
示例图片:



三、定义和访问数据库(Define and Access the Database)
Flask官方文档中使用的是SQLite数据库,通过Python代码操作SQL语句来实现对数据的操作。不过,目前Flask对于数据库操作主要使用的是SQLAlchemy,它提供了更高级别的抽象和更便捷的操作方式。在Flask的app对象中去初始化数据库功能,并通过SQLAlchemy来定义模型、执行查询等操作。
四、蓝图和视图
1. 视图函数:视图函数是为响应应用程序请求而编写的代码。Flask使用路由来将传入的请求URL匹配到应该处理它的视图。视图返回数据后再转换为响应传出。Flask也可以根据视图的名字和参数生成一个URL。
2. 蓝图的作用:蓝图用于更清晰地划分路由。在一个大型项目中,可能会有多个模块,每个模块都有自己的路由。为了避免路由冲突和便于维护,可以使用蓝图将不同模块的路由划分开来。每个模块都有自己的蓝图对象,并通过装饰器将路由绑定到蓝图上。然后,在工厂函数中注册这些蓝图对象。
创建和注册蓝图:
五、模板
Flask使用Jinja2作为模板引擎来渲染HTML页面。Jinja2提供了丰富的模板标签和过滤器,使得在HTML中嵌入Python代码变得简单而安全。
1. 模板文件:HTML模板文件存放在templates文件夹中。
2. 渲染模板:在视图函数中,使用render_template()函数来渲染模板,并传递数据给模板。
3. 模板继承:为了避免重复编写相同的HTML代码,可以使用模板继承。定义一个基础模板,并在其中预留一些“坑”(block),由子模板来填充这些“坑”。子模板通过{% extends 'base.html' %}来继承基础模板,并使用{% block %}标签来重写基础模板中的相应部分。
六、静态文件
静态文件(如CSS、JS、图片等)存放在static文件夹中。在HTML模板中,可以通过{{ url_for('static', filename='filename') }}来引用这些静态文件。
七、部署相关问题
部署Flask应用到生产环境涉及多个方面,包括服务器选择、WSGI服务器配置、数据库迁移、环境变量设置等。这些内容将在后续的文章中详细介绍。