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())
- 定义蓝图
apps/xx/view.pyfrom flask import Blueprint xx_bp = Blueprint('xx(蓝图名)',__name__) @xx_bp.route('/...') def xxx(): pass - 注册蓝图
from flask import Flask from apps.xx.view import xx_bp app = Flask(__name__) app.register_blueprint(xx_bp)
模型
安装三个库 pymysql,flask-sqlalchemy,flask-migrate
- pymysql --> python下的mysql驱动
- flask-sqlalchemy --> ORM
- 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
数据库
项目结构
本文来自博客园,作者:panmengxiang,转载请注明原文链接:https://www.cnblogs.com/pmxisme/p/15022930.html

浙公网安备 33010602011771号