day59-flask模型关联及图片上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day59-flask模型关联及图片上传相关的知识,希望对你有一定的参考价值。
参考技术A flask中查询可以组合查询
filter(模型名.字段=值)可以接多个filter表示且操作;也可以直接在一个filter里面用逗号分开表示且操作
and_ 且,可不写,默认情况就是且操作;not_ 或;or_ 或
flask中分页可以用paginate实现(内部借助offset和limit实现)
对象.has_next/has_prev 是否有下一页/上一页
对象.next_num/prev_num 下一页/上一页页码
对象.page:当前页
对象.pages:共多少页
对象.iter_pages() 被循环取的迭代部分
items分页对象中保存的页面数据
如果循环中页码很多需要隐藏中间的部分页码时,在页面解析时
页面解析及分页:
https://blog.zengrong.net/post/join-in-flash-sqlalchemy/
在字段中需要添加g_id = db.Column(db.Integer, db.ForeignKey(\'grade.id\'), nullable=True),用于表示关联至哪个模型
在最后需要添加s_g = db.relationship(\'Student\', backref=\'g\');定义了一个关联关系字段,和反向引用backref参数。用于查询。当通过本表查从表时,直接班级对象.s_g字段就能获取一个含有这个班级的所有学生列表。当通过从表查本表时,用从表对象.g就能获取班级对象。
在一对多模型中:
定义外键字段,db.ForeignKey(\'关联表名.id\')
关联字段=db.relationship(\'关联的模型名\',backref=\'反向引用参数\')(可以通过该字段查询对象)
重点:relationship定义的字段,可以放在任何一个模型中
当通过关联字段所在的主表去查询另外的从表时,
从表对象列表=主表对象.关联字段
当通过从表(没有关系字段的表)查主表时。主表对象=从表对象.关系字段别名
在一对多模型中,如果使用多方去查询一方,如果筛选条件只是在多这一方,那么使用普通查询就可以查询出合乎条件的结果,如果筛选条件既存在于多方中又存在于一方中,那么就需要使用join来进行联表并进行筛选。如下,发布时间存在于空气质量表中,而is_owned存在于网格表中,用普通查询则会显示空气质量表没有is_owned属性,所以需要使用join进行联表
其中s_c为定义的中间表。多对多模型中定义外键字段是通过中间表,db.Table(表名,字段)完成的;
关联字段=db.relationship(\'关联的模型名\',secondary=中间表,backref=\'反向引用参数\');
重点:relationship定义的字段,可以放在任何一个模型中。
给学生添加课程方法:学生对象.关联字段别名.append(课程对象)
给课程添加学生方法:课程对象.关联字段.append(学生对象)
删除方法:学生对象.关联字段别名.remove(课程对象)
icon = request.files.get(\'image\'):获取上传文件中的图片;
os.path.abspath( file ):获取当前文件的绝对路径。os.path.dirname(路径):获取路径的上层的路径。BASE_DIR代表获取项目的文件路径。
STATIC_DIR = os.path.join(BASE_DIR, \'static\'):获取BASE_DIR文件(项目文件)下的static文件路径。
MEDIA_DIR = os.path.join(STATIC_DIR, \'media\')获取STATIC_DIR文件夹下的media的路径。
a = icon.mimetype.split(\'/\')[-1:][0]获取文件的mimetype属性并对其进行切割。也可写成a = icon.mimetype.split(\'/\')[-1]都是获取文件的后缀。
name = filename + \'.\' + a:组装要保存的文件的名字。
path = os.path.join(MEDIA_DIR, name):获取图片的路径
icon.save(path)保存图片,将图片保存在path路径。
stu.icon = name将图片名字赋值给icon属性。
<img src="/static/media/ stu.icon ">页面解析图片路径
<a href=" url_for(\'app.edit_stu\', id=stu.id) ">编辑</a>页面调用后端函数并传输参数
以上是关于day59-flask模型关联及图片上传的主要内容,如果未能解决你的问题,请参考以下文章
多图上传控制器及模型代码thinkphp5+layui实现多图上传保存到数据库,可以实现图片自由排序,自由删除。