flask学习笔记

主要

创建一个简单应用

from flask import Flask

app = Flask(__name__)

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

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

模板

jinja2模板引擎

蓝图

为什么要用蓝图,这是干嘛的?
蓝图可以把每个不同的路由分离在不同的文件,方便管理(相当于express中的expres.Router())

  1. 定义蓝图
    apps/xx/view.py
    from flask import Blueprint
    
    xx_bp = Blueprint('xx(蓝图名)',__name__)
    
    @xx_bp.route('/...')
    def xxx():
    	pass
    
  2. 注册蓝图
    from flask import Flask
    from apps.xx.view import xx_bp
    
    app = Flask(__name__)
    app.register_blueprint(xx_bp)
    

模型

安装三个库 pymysql,flask-sqlalchemy,flask-migrate

  1. pymysql --> python下的mysql驱动
  2. flask-sqlalchemy --> ORM
  3. flask-migrate --> 操作数据库的命令,创建表和字段

ORM

对象关系映射
封装了元素的sql语句,让数据库操作更easy

属性 字段
对象 表中一行数据

flask-sqlalchemy

exts/__init__.py

from flask_sqlalchemy import Sqlalchemy

db = Sqlalchemy()

settings.py

class Config:
	# ? 设置mysql的地址: 数据库类型+驱动://username:password@地址:port/数据库名称
	SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root@localhost/flask01'

class DevelopmentConfig(Config):
	pass

class ProductionConfig(Config):
	pass

apps/__init__.py

from flask import Flask
import settings
from exts import db


def create_app():
    app = Flask(__name__, template_folder="../templates")
	# ? 导入配置文件
    app.config.from_object(settings.DevelopmentConfig)
	# ? 关联flask与数据库
    db.init_app(app)
    return app

apps/user/model.py

import sqlalchemy as sa # ! db.Column()也可以但是没有提示,用 sa.Column()就有提示啦
from exts import db

class User(db.Model):
	id = sa.Column(sa.Integer(),primary_key=True)
	...

flask-migrate

创建表和字段

flask:2.0.1
flask-migrate:2.5.0

# ? 创建一个migrations文件夹(只需一次) 1
flask db init

# ? 在migrations/versions下创建一个文件 (只需一次) 2
# ? 先创建模型在使用该命令
# ! 使用该命令时记得在app.py中导入模型!!!(from apps.user.models import User)
flask db migrate

# ? 在migrations/versions下创建一个新文件
# ? 每当你的模型发生变化就需要使用该命令,然后使用upgrade
flask db revesion

# ? 使用下一个migrations/versions中文件 3
flask db upgrade

# ? 使用上一个migrations/versions中文件
# ? 回滚
flask db downgrade

数据库

项目结构

posted @ 2021-07-17 11:12  panmengxiang  阅读(89)  评论(0)    收藏  举报