Jeffrey的博客 Jeffrey的博客

左脑编程,右脑写诗

目录
Flask构建Web API Wheel(四)—— 项目结构组织及启动
/      

Flask构建Web API Wheel(四)—— 项目结构组织及启动

Flask不像Django,在创建项目后会有基本目录结构,Flask需要根据自己的目录规划,来建立整体的结构,笔者组织整理了项目结构如下。

项目结构

- /app 应用包
  - /api 接口包
  - /config 配置包
  - /lib 工具包
    - enums.py 枚举模块
    - exception.py 异常处理模块
    - red_print.py 红图模块
    - token.py 令牌模块
    - schema.py 视图结构模块
  - /model 模型包
  - /patch 补丁包
  - /service 业务包
  - /static 静态资源目录
  - /template 模板目录
  - /validator 校验包
- /log 日志目录
- .flaskenv Flask环境变量文件
- .env 专属环境变量文件
- gconfig.py gunicorn配置
- Pipfile Pipenv依赖配置
- starter.py 启动文件

这里主要讲述下Flask的启动方式,官方文档使用的是Flask-Cli这一内置的命令行工具。

Flask-Cli

在之前有Flask-Script代替Flask-Cli的工作,并且很多项目目前也效仿如此,但Flask官方引入了Click提供指令支持,并且通过flask-Cli已经支持了一些指令比如最常用的flask run用于启动项目。

flask --help

"""
Commands:
  db      Perform database migrations.
  routes  Show the routes for the app.
  run     Run a development server.
  shell   Run a shell in the app context.
"""

Flask-Script最大的作用是搭配Flask-Migrate进行数据库的迁移,现在有了Flask-Cli我们同样也可以这么做。

flask db init
flask db migrate
flask db upgrade

Flask-Cli还可以通过@app.cli.command()来自定义指令,通过@click.option()增加指令参数,说到这里没有理由在重新用回Flask-Script了吧。

python-dotenv

fLask run需要指定环境变量,这对不同环境开发来讲不是很方便,此时python-dotenv很好的解决了这一问题,这一依赖在上一节中已经安装。

python-dotenv会自动装配项目根目录下的.env和.flaskenv文件,且.env的优先级会比.flaskenv的优先级更高。当然我们也可以自己在app载入的时候指定所要加载的环境变量文件的名称,例如:

load_dotenv(dotenv_path='.flaskenv')

需要注意的是.flaskenv或.env文件需要放置在启动器的同级目录,这里是项目的根目录。

# .flaskenv
FLASK_APP=starter:app
FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=5000
FLASK_ENV=development
# production or development

标题:Flask构建Web API Wheel(四)—— 项目结构组织及启动
作者:Jeffrey