flask mysql项目模板渲染_flask项目——模型类设置以及数据迁移和主页渲染

1. 表间结构分析及模型类准备

表间结构示意图:

5211b58a516046bc1e35de57013e0fe7.png

模型类准备:

在info文件夹中存储着我们的所有的业务逻辑,所以,我们可以在info中新建一个名为models.py的python文件,用于存储模型类定义的相关代码。

在models.py中放入下面的代码

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

from datetime importdatetimefrom werkzeug.security importgenerate_password_hash, check_password_hashfrom info importconstantsfrom . importdbclassBaseModel(object):"""模型基类,为每个模型补充创建时间与更新时间"""create_time= db.Column(db.DateTime, default=datetime.now) #记录的创建时间

update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) #记录的更新时间

#用户收藏表,建立用户与其收藏新闻多对多的关系

tb_user_collection =db.Table("info_user_collection",

db.Column("user_id", db.Integer, db.ForeignKey("info_user.id"), primary_key=True), #新闻编号

db.Column("news_id", db.Integer, db.ForeignKey("info_news.id"), primary_key=True), #分类编号

db.Column("create_time", db.DateTime, default=datetime.now) #收藏创建时间

)

tb_user_follows=db.Table("info_user_fans",

db.Column('follower_id', db.Integer, db.ForeignKey('info_user.id'), primary_key=True), #粉丝id

db.Column('followed_id', db.Integer, db.ForeignKey('info_user.id'), primary_key=True) #被关注人的id

)classUser(BaseModel, db.Model):"""用户"""

__tablename__ = "info_user"id= db.Column(db.Integer, primary_key=True) #用户编号

nick_name = db.Column(db.String(32), unique=True, nullable=False) #用户昵称

password_hash = db.Column(db.String(128), nullable=False) #加密的密码

mobile = db.Column(db.String(11), unique=True, nullable=False) #手机号

avatar_url = db.Column(db.String(256)) #用户头像路径

last_login = db.Column(db.DateTime, default=datetime.now) #最后一次登录时间

is_admin = db.Column(db.Boolean, default=False)

signature= db.Column(db.String(512)) #用户签名

gender = db.Column( #性别

db.Enum("MAN", #男

"WOMAN" #女

),

default="MAN")#当前用户收藏的所有新闻

collection_news = db.relationship("News", secondary=tb_user_collection, lazy="dynamic") #用户收藏的新闻

#用户所有的粉丝,添加了反向引用followed,代表用户都关注了哪些人

followers = db.relationship('User',

secondary=tb_user_follows,

primaryjoin=id ==tb_user_follows.c.followed_id,

secondaryjoin=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值