第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项目的结构和配置,包括目录结构、配置文件、环境变量和日志记录。