第2章:项目结构与配置
2.1 Flask项目目录结构
一个典型的Flask项目可能包含以下目录和文件:
- /app- 应用目录- __init__.py- 初始化Flask应用
- models.py- 数据模型定义
- views.py- 视图函数定义
- forms.py- 表单类定义
 
- /config- 配置文件目录- config.py- 应用配置
- default_config.py- 默认配置
 
- /templates- 存放模板文件
- /static- 存放静态文件,如CSS、JavaScript和图片
- migrations- 数据库迁移文件(如果使用Flask-Migrate)
- tests- 测试文件
- run.py- 应用启动文件
- requirements.txt- 项目依赖列表
- .env- 环境变量文件
示例代码:项目目录结构
my_flask_app/
│
├── /app
│   ├── __init__.py
│   ├── models.py
│   ├── views.py
│   └── forms.py
│
├── /config
│   ├── config.py
│   └── default_config.py
│
├── /templates
│   └── ...
│
├── /static
│   └── ...
│
├── /migrations
│   └── ...
│
├── /tests
│   └── ...
│
├── run.py
├── requirements.txt
└── .env
2.2 配置文件的使用
Flask应用的配置可以通过配置文件进行管理。创建一个config.py文件来定义不同的配置类。
示例代码:config.py
class Config(object):SECRET_KEY = 'your_secret_key'SQLALCHEMY_DATABASE_URI = 'sqlite:///db.sqlite'class DevelopmentConfig(Config):DEBUG = Trueclass ProductionConfig(Config):DEBUG = Falseapp_config = {'development': DevelopmentConfig,'production': ProductionConfig
}
2.3 环境变量的配置
环境变量用于存储敏感信息,如数据库密码或API密钥,不应直接硬编码在代码中。
示例代码:设置环境变量
export FLASK_APP=my_flask_app
export FLASK_ENV=development
在Flask中,你可以使用os.environ来访问这些环境变量。
示例代码:访问环境变量
import os
DATABASE_URI = os.environ.get('DATABASE_URI', 'default_uri')
2.4 日志记录的设置
日志记录对于调试和监控应用至关重要。Flask使用Python的logging模块进行日志记录。
示例代码:配置日志记录
import logging
from logging.handlers import RotatingFileHandlerdef configure_logging(app):if not app.debug:file_handler = RotatingFileHandler('app.log', maxBytes=10240, backupCount=10)file_handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'))file_handler.setLevel(logging.INFO)app.logger.addHandler(file_handler)app.logger.setLevel(logging.INFO)app.logger.info('MyFlaskApp startup')
在__init__.py中调用此函数来配置日志。
示例代码:init.py中的日志配置
from flask import Flask
from app import create_app, configure_loggingapp = create_app()
configure_logging(app)
2.5 总结
本章介绍了如何设置Flask项目的结构和配置,包括目录结构、配置文件、环境变量和日志记录。