蓝图
每一个view都有一个蓝图
Blueprint 是一种组织一组相关视图及其他代码的方式。与把视图及其他 代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后在工厂函数中 把蓝图注册到应用。
from flask import Blueprint
user_bp = Blueprint('user',__name__)
这里创建了一个名称为 'auth' 的 Blueprint 。和应用对象一样, 蓝图需要知道是在哪里定义的,因此把 __name__ 作为函数的第二个参数。 url_prefix 会添加到所有与该蓝图关联的 URL 前面。
使用 app.register_blueprint() 导入并注册 蓝图。新的代码放在工厂函数的尾部返回应用之前。
模型
1。flask-script
pip install flask-script
使用里面的Manager进行命令得到管理和使用:
manager = Manager(app=app)
manager.run() ---->启动
使用命令在终端:
python3 app.py runserver ---->Runs the Flask development server
python3 app.py runserver -h 0.0.0.0 -p 5001
2. 搭建数据库:
mtv:
model 模型 ----》数据库
template 模板
view 视图
-
安装:
pip3 install pymysql 建公路
pip3 install flask-sqlalchemy 实现ORM映射
pip3 install flask-migrate 发布命令工具
步骤:
1。配置数据库的连接路径
# mysql+pymysql://user:password@hostip:port/databasename
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:root:密码@127.0.0.1:3306/flaskday05'
2。flask-sqlalchemy的搭建:
创建包ext
__init__.py中添加:
db = SQLAlchemy() ---->必须跟app联系
def create_app():
....
db.init_app(app)
return app
3. flask-migrate的配置:
migrate = Migrate(app=app, db=db)
manager.add_command('db', MigrateCommand)
4.创建模型:
models.py
模型就是类,经常称作模型类
class User(db.Model): ------> user表
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(15), nullable=False)
password = db.Column(db.String(12), nullable=False)
phone = db.Column(db.String(11), unique=True)
rdatetime = db.Column(db.DateTime, default=datetime.now)
常见的数据类型:
Integer 整型
String(size) 字符串类型,务必指定大小
Text 长文本类型
DateTime 日期时间
Float 浮点类型
Boolean 布尔类型
PickleType 存储pickle类型 主要跟序列化有关
LargeBinary 存储大的二进制类型
可选的:
primary_key=True 主键
autoincrement=True 自增
nullable=False 不允许为空
unique=True 唯一
default=datetime.now 默认值 可以设置成当前系统时间或者其他的值
使用命令
5.使用命令:
a. ************敲黑板***************
在app.py 中导入模型:from apps.user.models import User
b. 在终端使用命令:db
python3 app.py db init -----》 产生一个文件夹migrations
python3 app.py db migrate -----> 自动产生了一个版本文件
项目
| ---apps
| ---ext
| ---migrations python3 app.py db init 只需要init一次
|---versions 版本文件夹
|---71edde7ee937_.py ---》 python3 app.py db migrate 迁移
|---cc0dca61130f_.py
python3 app.py db upgrade 同步
python3 app.py db downgrade 降级
# 添加
# 3.将user对象添加到session中(类似缓存)
db.session.add(user)
# 4.提交数据
db.session.commit()