最新消息:这里是最新消息

flask拆分MTV设计模式

python benty 432浏览 0评论

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 # 更新数据库并记录版本信息

启动之后的访问路径

首页: http://127.0.0.1:5000

其他测试路径在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设计模式

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址