# 文件夹 ->
# 文件 -
# 项目名称
project
# 公共api
-> api
# orm 迁移目录
-> migrations
# 视图
-> views
# flask 对象
- __init__.py
# 配置
- settings.py
# 启动文件
- manage.py
# 模型文件
- models.py
正常操纵是直接在视图中定义flask对象在视图中使用。这种方式,在测试过程中使用即可。实际项目中,一般使用蓝图
,通过蓝图为每一个视图文件服务。一般根据模块拆分。相比较django
而言flask
拥有更灵活的配置和使用方式。这意味着你要增加很多扩展,这些扩展可能没有类似djangorestframework
那样的扩展好用。但是,这就是 flask。
以上,项目拆分是小型项目中拆分,如果更大型项目还可以拆分 model
文件。
flask对象
views/__init__.py
。创建 flask 对象 加载配置、数据库并通过蓝图映射到各个视图文件中。
from flask import Flask
from flask_migrate import Migrate
from models import db
from views.users import user
from views.articles import article
migrate = Migrate()
def create_app(config):
app = Flask(__name__)
# 加载配置
app.config.from_object(config)
# 数据库
db.init_app(app)
migrate.init_app(app, db)
# 蓝图
app.register_blueprint(user, url_prefix='/v1/api/users')
app.register_blueprint(article, url_prefix='/v1/api/articles')
return app
启动文件
启动文件将app对象最终启动,如果使用uwsgi
或者gunicorn
部署具体参照官网。
from views import create_app
from settings import Dev, Product
app = create_app(Dev)
if __name__ == '__main__':
app.run()
配置文件
flask所有配置统一放到配置文件中。
import datetime
import os
class Config:
DEBUG = True
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# SQLALCHEMY_DATABASE_URI = 'mysql://root:hello2022.hk@112.124.23.96:3306/wu_zhi'
SQLALCHEMY_DATABASE_URI = 'mysql://root:hello_world@192.168.0.105:3306/wu_zhi'
# SQLALCHEMY_DATABASE_URI = 'mysql://root:hello2022.hk@112.124.23.96:3306/wu_zhi'
# 动态追踪设置
SQLALCHEMY_TRACK_MODIFICATIONS = True
# token 有效时间
AUTH_TOKEN_TIME = datetime.timedelta(days=7)
# 令牌
SECRET = 'hello.FreeDom.2021'
# 全局文件大小
MAX_CONTENT_LENGTH = 10 * 1024 * 1024
# 上传 图片 后缀限制
UPLOAD_FOLDER = os.path.join(BASE_DIR, 'static', 'head')
UPLOAD_FILE_SUFFIX = ('.jpg', '.png', 'jpeg')
class Dev(Config):
pass
class Product(Config):
DEBUG = False
pass