Flask项目拆分
1.安装
1)创建app的基础包
pip install flask
2)Manager包
pip install flask_script
3)blueprint蓝图包
pip install blueprint
4)orm框架
pip install flask_sqlalchemy
5)数据库迁移扩展
pip install flask_migrate
2.拆分思路
3.文件结构
|-manage.py
|-app
|-__init__.py
|-config.py
|-views.py
|-ext.py
|-models.py
4.文件代码
1)manage.py
from app import create_app
from flask_script import Manager
from flask_migrate import MigrateCommand
app=create_app()
manager=Manager(app)#终端启动参数解析工具
manager.add_command('db',MigrateCommand)#终端数据迁移工具
if __name__=='__main__':
manager.run()
2)__init__.py
from flask import Flask
from app.config import envis
from app.views import init_first_blue
from app.ext import init_ext
def create_app():
app=Flask(__name__,template_folder='templates')#创建app,配置template文件夹位置
app.config.from_object(envis.get('develop'))#为app加载配置信息
init_first_blue(app)#初始化views
init_ext(app)#初始化扩展库
return app
3)views.py
from flask import Blueprint
from app.ext import db
from app.models import Person#如果views中未引用models,db.create_all()将不会在数据库生成表
blue=Blueprint('app01',__name__)
def init_first_blue(app):
app.register_blueprint(blueprint=blue)
@blue.route('/')
def index():
return 'hello'
4)ext.py
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db=SQLAlchemy()migrate=Migrate()
def init_ext(app):
db.init_app(app)#以懒加载方式向app注入db
migrate.init_app(app=app,db=db)#以懒加载方式向app注入db+migrate
5)models.py
from app.ext import db
class Person(db.Model): __tablename__='person'#设置表名称 __table_args__={'mysql_collate':'utf8_general_ci'}#设置字符编码为utf8 id=db.Column(db.Integer,primary_key=True,autoincrement=True)
name=db.Column(db.String(10),primary_key=True)
email=db.Column(db.String(20),primary_key=True)
age=db.Column(db.Integer)
6)config.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
def get_db_url(database):
ENGINE=database['ENGINE']
DRIVER=database['DRIVER']
USERNAME=database['USERNAME']
PASSWORD=database['PASSWORD']
HOST=database['HOST']
PORT=database['PORT']
NAME=database['NAME']
return "{}+{}://{}:{}@{}:{}/{}".format(ENGINE,DRIVER,USERNAME,PASSWORD,HOST,PORT,NAME)
class config():#通用配置
DEBUG=False
TESTING=False
SECRET_KEY='ABCDE123456'
SQLALCHEMY_TRACK_MODIFICATIONS=False
class DevelopEviroment(config):
DEBUG=True
TESTING=True
DATABASE={
'ENGINE':'mysql',
'DRIVER':'pymysql',
'USERNAME':'root',
'PASSWORD':'',
'HOST':'127.0.0.1',
'PORT':'3306',
'NAME':'test'
}
SQLALCHEMY_DATABASE_URI=get_db_url(DATABASE)
envis={
'develop':DevelopEviroment,
}还没有评论,来说两句吧
