Skip to content

fishjar/flask-rest-boilerplate

Repository files navigation

flask rest boilerplate

使用指引

# 虚拟环境
# apt-get install python3-venv
python3 -m venv venv

# 激活
. venv/bin/activate

# 安装依赖
# pip install Flask
# pip install Flask-SQLAlchemy
# pip install flask-marshmallow
# pip install marshmallow-sqlalchemy
# pip install PyJWT
# pip install schema
# pip install pymysql
pip install -r requirements.txt

# 环境变量
export FLASK_APP=flaskr
# export FLASK_ENV=production # 缺省值
# export FLASK_ENV=testing
export FLASK_ENV=development

# 初始化
flask init-db

# 运行
flask run

# 打开一个 Shell
flask shell

# 导出依赖
pip freeze > requirements.txt

生产部署

# 依赖
pip install gunicorn
pip install gevent

# 如有需要
# 启动一个数据库
sudo docker-compose -f docker-compose.mysql.yml up -d

# 运行
# gunicorn main:app -w 4 -e FLASK_ENV=production -b :8000
gunicorn -c gunicorn.py main:app

docker 部署

# 编辑环境变量
vi .env.prod

# 启动
docker-compose up -d

# 初始化数据
docker-compose exec web flask init-db

# 测试
curl 127.0.0.1:8000
curl -H "Content-Type: application/json" -d '{"userName":"gabe","password":"123456"}' 127.0.0.1:8000/login/account

# 进入容器
docker-compose exec web bash
docker-compose exec db bash

存在问题

  • (已解决,存小小问题)Relationships 问题: 参考
    • 模型相互引用问题,网上很多类似问题:参考,2
    • Menu 自引用问题,remote_side=[id]idBaseModel定义,如何引入
    • UserGroupUserGroup 相互引用问题
  • 部分错误无法被_handle_exception捕获,而是被内置处理器捕获了
  • (已解决)暂无优雅的数据校验,sqlalchemy 推荐的校验方式很繁琐

目录结构

├── docker-compose.mysql.yml
├── docker-compose.yml
├── Dockerfile
├── flaskr
│   ├── config.py
│   ├── handler
│   │   ├── Auth.py
│   │   ├── Group.py
│   │   ├── __init__.py
│   │   ├── Login.py
│   │   ├── Menu.py
│   │   ├── Role.py
│   │   ├── UserGroup.py
│   │   └── User.py
│   ├── __init__.py
│   ├── model
│   │   ├── Auth.py
│   │   ├── Base.py
│   │   ├── Group.py
│   │   ├── __init__.py
│   │   ├── Menu.py
│   │   ├── Role.py
│   │   ├── UserGroup.py
│   │   └── User.py
│   ├── router
│   │   └── __init__.py
│   └── utils
│       ├── auth.py
│       ├── bp.py
│       ├── cmd.py
│       ├── err.py
│       ├── __init__.py
│       ├── jwt.py
│       ├── log.py
│       └── __pycache__
├── gunicorn.py
├── LICENSE
├── main.py
├── README.md
└── requirements.txt

About

flask rest bolierplate

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published