Skip to main content

组织目录结构

为了让项目更加清晰,我们需要重新组织一下目录结构,首先对目录结构进行拆分。

拆分前

原始manage.py文件代码如下:

# manage.py 
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
from flask_migrate import Migrate


app = Flask(__name__)
app.config['SECRET_KEY'] = 'daxiongketang'
app.config['SQLALCHEMY_DATABASE_URI'] = (
'mysql+pymysql://root:andy123456@localhost/daxiong?charset=utf8mb4'
)

db = SQLAlchemy(app)
migrate = Migrate(app, db)


@app.route('/')
def index():
return "hello world"


if __name__ == "__main__":
app.run()

拆分后

拆分后目录结构如下:

├── app
│   ├── __init__.py
│   ├── models.py
│   ├── routes.py
├── manage.py
├── migrations
└── venv

manage.py文件代码如下

# manage.py
from app import app


if __name__ == '__main__':
app.run(debug=True)

app下__init__.py代码如下:

# app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate


app = Flask(__name__)
app.config['SECRET_KEY'] = 'daxiongketang'
app.config['SQLALCHEMY_DATABASE_URI'] = (
'mysql+pymysql://root:andy123456@localhost/daxiong?charset=utf8mb4'
)

db = SQLAlchemy(app)
migrate = Migrate(app, db)
login_manager = LoginManager(app)

# 导入路由
from app import routes

app下models.py代码如下:

from app import db
from datetime import datetime


class Course(db.Model):
course_id = db.Column(db.String(100), primary_key=True, nullable=False)
product_id = db.Column(db.String(100), nullable=False)
product_type = db.Column(db.Integer, nullable=False)
product_name = db.Column(db.String(125), nullable=False)
provider = db.Column(db.String(125), nullable=False)
score = db.Column(db.Float(2))
score_level = db.Column(db.Integer)
learner_count = db.Column(db.Integer)
lesson_count = db.Column(db.Integer)
lector_name = db.Column(db.String(125))
original_price = db.Column(db.Float(2))
discount_price = db.Column(db.Float(2))
discount_rate = db.Column(db.Float(2))
img_url = db.Column(db.String(125))
big_img_url = db.Column(db.String(125))
description = db.Column(db.Text)


class Sale(db.Model):
id = db.Column(db.Integer, autoincrement=True, primary_key=True, nullable=False)
course_id = db.Column(db.String(100), db.ForeignKey('course.course_id'))
product_name = db.Column(db.String(125), nullable=False)
learner_count = db.Column(db.Integer)
create_time = db.Column(db.Date, default=datetime.today())
course = db.relationship('Course', backref=db.backref('Sale', lazy='dynamic'))

app下routes.py代码如下:

#app/routes.py
from app import app


@app.route
def index():
return "hello world"