Flask拆分为简单迷你的MTV模式
一个简单的MVC模型迷你框架,在python中也称为MTV
依赖的库有:
- flask==1.1.2
- flask_script
- flask_sqlalchemy
- flask_migrate==2.5.3
文件目录结构
- manage.py
- app目录
- __init__.py初始化程序目录
- ext.py 第三方库目录
- settings.py 项目配置目录
- models.py 模型定义文件
- views 视图处理目录
- __init__.py 视图注册蓝图初始化
- first.py 定义蓝图路由业务逻辑
文件目录很简单,就只有manage.py和app目录
manage.py是程序入口文件,用来运行flask和迁移数据库使用.
启动flask:
python manage.py runserver -r -d
# 启动并开启自动重启调试模式
生成迁移文件
python manage.py db init #初始化
python manage.py db migrate # 生成迁移文件
python manage.py db upgrade # 更新数据库并记录版本信息
启动之后的访问路径
其他测试路径在app/views/first.py文件中
================
manage.py文件内容
from flask_migrate import MigrateCommand
from flask_script import Manager
import os
from app import create_app
env=os.environ.get(“FLASK_ENV”,”develop”)
app=create_app(env)
manage=Manager(app)
manage.add_command(“db”,MigrateCommand)
manage.run()
app/__init__.py初始化文件
from flask import Flask
from app.views import init_view
from app.ext import init_ext
from app.settings import envs
def create_app(env):
app=Flask(__name__)
app.config.from_object(envs.get(env))
init_ext(app)
init_view(app)
return app
—————————————
app/ext.py第三方扩展库文件
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db=SQLAlchemy()
migrate=Migrate()
def init_ext(app):
db.init_app(app)
migrate.init_app(app,db)
————————————
app/models.py模型文件
from app.ext import db
class User(db.Model):
id=db.Column(db.Integer,primary_key=True)
name=db.Column(db.String(7))
——————————-
app/settings.py 配置文件
dbinfo={
“user”:”root”,
“pwd”:”root”,
“type”:”mysql”,
“driver”:”pymysql”,
“host”:”localhost”,
“port”:”3306″,
“db”:”flask”
}
def get_db_uri(dbinfo):
return “{}+{}://{}:{}@{}:{}/{}”.format(dbinfo[“type”],dbinfo[“driver”],dbinfo[‘user’],dbinfo[“pwd”],dbinfo[“host”],dbinfo[“port”],dbinfo[“db”])
class Config: #SQLALCHEMY_DATABASE_URI
SQLALCHEMY_DATABASE_URI=get_db_uri(dbinfo)
SECRET_KEY=”dkjfkjdlafjaefjkreealfkaip”
DEBUG=True
SQLALCHEMY_TRACK_MODIFICATIONS=False
envs={
“develop”:Config
}
—————————-
views/__init__.py 注册所有蓝图文件
from app.views.first import blueone
def init_view(app):
app.register_blueprint(blueone)
—————————-
views/first.py 定义蓝图路由以及业务逻辑
from app.views.first import blueone
def init_view(app):
app.register_blueprint(blueone)
=====================================
以上就完整的定义好了flask的MTV模式
转载请注明:稻香的博客 » flask拆分MTV设计模式