Flask框架
项目构造
python包
flask项目,一切功能围绕 核心app 来完成, 这个包就用来构造 核心APP
-
app/settings.py: 项目的配置文件
class Config(object):
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@localhost:3306/flask'
# mysql://用户名:密码@IP地址:端口号/数据库名
SQLALCHEMY_TRACK_MODIFICATIONS = False
-
app/extensions.py: 项目所使用的第三方扩展插件
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_cors import CORS
# 环境中,使用 mysqlclient 链接mysql,就可以正常使用
# 如果使用的是pymysql链接 mysql, 就需要加一些配置项
# import pymysql
# pymysql.install_as_MySQLdb()
db = SQLAlchemy()
migrate = Migrate()
cors = CORS()
def config_extensions(app):
db.init_app(app)
migrate.init_app(app, db=db)
cors.init_app(app)
-
app/__init__.py: 定义工厂函数,生成核心flask APP
from flask import Flask
from .settings import Config
from .extensions import config_extensions
def create_app():
# 1. 创建APP
app = Flask(__name__)
# 2. 导入配置参数
app.config.from_object(Config)
# 3. 导入 第三方的插件
config_extensions(app)
# 4. 返回APP
return app
项目的管理文件
在项目中,创建
manage.py
-
manage.py
from flask_script import Manager, Server
from flask_migrate import MigrateCommand
from app import create_app
# 1. 利用工厂函数生成app
app = create_app()
# 2. 创建管理对象,管理项目
manage = Manager(app)
# 3. 构建命令
manage.add_command('runserver', Server(host='0.0.0.0', port=7000))
manage.add_command('db', MigrateCommand)
if __name__ == '__main__':
# 利用管理器启动服务
manage.run()
命令
在项目的终端可以使用如下命令,操作项目
python manage.py runserver # 启动flask 服务
python manage.py db init # 只有第一次迁移时,才会执行 该命令, 执行完,会生成迁移文件
python manage.py db migrate # 生成迁移文件,出路第一次之外,任何修改模型类,都需要 执行该命令, 生成迁移文件
python manage.py db upgrade # 根据迁移文件,生成表
学校子应用
-
school/__init__.py: 创建蓝图对象, 创建完成,需要 注册蓝图
from flask.blueprints import Blueprint
school_bp = Blueprint('school', __name__)
# 为了让蓝图,管理你的 模型类和视图,因此需要导入
from .models import *
from .views import *
-
school/models.py: 创建模型类
from app.extensions import db
# 学生: id、姓名、年龄、性别
class Student(db.Model):
__tablename__ = 'tb_student' # 指定表名
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20))
age = db.Column(db.Integer)
gender = db.Column(db.String(5))
需要在 蓝图,导入模型类,以便项目识别 模型类
生成迁移文件:
python manage.py db migrate生成表:
python manage.py db upgrade
视图
school/views.py: 实现 逻辑处理
from flask import request
from school import school_bp
from .models import Student
from app.extensions import db
from sqlalchemy.exc import SQLAlchemyError

浙公网安备 33010602011771号