第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
- 环境变量文件
示例代码:项目目录结构
plaintext
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
python
class Config(object):
SECRET_KEY = 'your_secret_key'
SQLALCHEMY_DATABASE_URI = 'sqlite:///db.sqlite'
class DevelopmentConfig(Config):
DEBUG = True
class ProductionConfig(Config):
DEBUG = False
app_config = {
'development': DevelopmentConfig,
'production': ProductionConfig
}
2.3 环境变量的配置
环境变量用于存储敏感信息,如数据库密码或API密钥,不应直接硬编码在代码中。
示例代码:设置环境变量
plaintext
export FLASK_APP=my_flask_app
export FLASK_ENV=development
在Flask中,你可以使用os.environ
来访问这些环境变量。
示例代码:访问环境变量
python
import os
DATABASE_URI = os.environ.get('DATABASE_URI', 'default_uri')
2.4 日志记录的设置
日志记录对于调试和监控应用至关重要。Flask使用Python的logging
模块进行日志记录。
示例代码:配置日志记录
python
import logging
from logging.handlers import RotatingFileHandler
def 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中的日志配置
python
from flask import Flask
from app import create_app, configure_logging
app = create_app()
configure_logging(app)
2.5 总结
本章介绍了如何设置Flask项目的结构和配置,包括目录结构、配置文件、环境变量和日志记录。