轮播收藏

JSON数据存入数据

import jsonimport pymysql#获取json里的轮播图片数据
def read_banners():images = []with open("getBanner.json") as banners_file:banners_json = banners_file.read()print(banners_json)banners_data = json.loads(banners_json).get("data")# print(banners_data)for banner in banners_data:image = banner.get("image")images.append(image)return imagesdef insert_db(images):
#连接数据库mysql_client = pymysql.Connect(host="localhost", port=3306, user="root", password="*******", charset="utf8", database="FlaskWork")
#开启事务mysql_client.begin()
#创建游标cursor = mysql_client.cursor()for image in images:cursor.execute('INSERT INTO banner(image) VALUES ("%s");' % image)
#提交到轮播图表里mysql_client.commit()if __name__ == '__main__':images = read_banners()print(images)insert_db(images)
import json
import pymysql
#电影数据的插入
def read_movies():with open("getMovies.json") as movies_file:movies_json = movies_file.read()# print(movies_json)movies_data = json.loads(movies_json).get("data")# print(movies_data)return movies_datadef insert_db(movies):mysql_client = pymysql.Connect(host="localhost", port=3306, user="root", password="", charset="utf8", database="FlaskWork")mysql_client.begin()cursor = mysql_client.cursor()for movie in movies:image = movie.get("image")title = movie.get("title")duration = movie.get("duration")postid = movie.get("postid")print(image, title, duration, postid)cursor.execute('INSERT INTO movie(image, title, duration, postid) VALUES ("%s", "%s", %d, %d);' % (image, title, int(duration), int(postid)))mysql_client.commit()if __name__ == '__main__':movies = read_movies()print(movies)insert_db(movies)

模型的创建

将自增字段id创建成父类抽象模型

from FlaskWork.ext import db
class BaseModel(db.Model):__abstract__ = True #抽象模型不产生数据库映射id = db.Column(db.Integer, primary_key=True, autoincrement=True)
#重写save方法def save(self):try:db.session.add(self)db.session.commit()except Exception as e:print(e)return Falsereturn True
#重写删除def delete(self):try:db.session.delete(self)db.session.commit()except Exception as e:print(e)return Falsereturn True

用户模型

class User(BaseModel):name = db.Column(db.String(32), unique=True)password = db.Column(db.String(256))email = db.Column(db.String(128), unique=True)icon = db.Column(db.String(256), nullable=True)def check_password(self, password):return self.password == password

展示界面模型

#轮播图
class Banner(BaseModel):image = db.Column(db.String(256))
#电影
class Movie(BaseModel):postid = db.Column(db.Integer)title = db.Column(db.String(128))image = db.Column(db.String(256))duration = db.Column(db.Integer)#电影和用户的收藏关系表
class Collect(BaseModel):movie_id = db.Column(db.Integer, db.ForeignKey(Movie.id))user_id = db.Column(db.Integer, db.ForeignKey(User.id))

视图层函数

首页展示
@movies_blue.route("/home/")
def home():username = session.get("username")icon = session.get("icon")print(username, icon)banners = Banner.query.all()movies = Movie.query.all()return render_template("home_logined.html", username=username, icon=icon, banners=banners, movies=movies)ajax实现收藏功能
#html页面
<ul class="nav nav-tabs child-nav"><li role="presentation" class="active"><a href="#">最新推荐</a></li>#判断用户存在才有收藏功能{% if username %}<li role="presentation"><a href="#">收藏</a></li>{% endif %}</ul>
#通过dom操作得到movieid 给div添加点击事件<div class="movie-like" movie_id="{{ movie.id }}"><span class="glyphicon glyphicon-heart" style="color: black;"></span><span>200</span></div>ajax请求$(".movie-like").click(function () {var $movie_like = $(this);var movie_id = $movie_like.attr("movie_id");$.post("/movies/collect/",{"movie_id": movie_id}, function (data) {console.log(data);#900表示未登录  ,跳转登录界面if(data["status"] === 900){window.open("/users/login/", target="_self");}else if(data["status"] === 902){$movie_like.children().css("color", "red");}}, "json")})视图层处理
@movies_blue.route("/collect/", methods=["POST"])
def collect():
#请求数据中获取movie_id和usernamemovie_id = request.form.get("movie_id")username = session.get("username")if not username:data = {"msg": "not login","status": 900}return jsonify(data)#查找用户是否已经收藏该电影user_id = User.query.filter(User.name.__eq__(username)).first().idcollects = Collect.query.filter(Collect.user_id.__eq__(user_id)).filter(Collect.movie_id.__eq__(movie_id)).all()if collects:data = {"msg": "collected","status": 901}return jsonify(data)#未收藏就创建收藏对象保存到表里collect = Collect(movie_id=movie_id, user_id=user_id)if collect.save():data = {"msg": "collect success","status": 902}return jsonify(data)else:data = {"msg": "collect fail","status": 903}return jsonify(data)

头像的存储

@users_blue.route("/register/", methods=["GET", "POST"])
def register():if request.method == "GET":return render_template("register.html")elif request.method == "POST":username = request.form.get("username")password = request.form.get("password")email = request.form.get("email")#获取头像文件icon = request.files.get("icon")path = Noneif icon:try:#获取文件的扩展名ext = "." + icon.filename.split(".")[-1]except Exception as e:#默认jpg格式ext = ".jpg"# path 应该是icon进行了存储操作产生的地址path = "/static/icons/" + username + extsave_path = "绝对路径" + username + ext#存储文件的地址icon.save(save_path)
# 文件提交使用enctype属性
<form method="post" action="{{ url_for("users_blue.register") }}" enctype="multipart/form-data">```

Flask实现Json数据存库和收藏功能相关推荐

  1. axios ajax和flask传输json数据

    axios ajax和flask传输json数据 视频 https://www.bilibili.com/video/BV1WC4y1b78y?p=23 https://www.bilibili.co ...

  2. flask返回json数据到前端_小白学Flask第六天| abort函数、自定义错误方法、视图函数的返回值...

    点击蓝色字关注我们! 一个正在努力变强的公众号 本文内容: 1. abort函数的使用 2. 自定义错误处理方法 3. 设置响应信息的方法 4. 返回json数据的方法 abort函数的使用 abor ...

  3. Andorid中使用Gson和Fast-json解析库解析JSON数据---第三方库学习笔记(二)

    JSON介绍: JSON:JavaScript对象表示法 JSON是存储和交换文本信息的语法. 特点: JSON是轻量级的文本数据交换格式 JSON独立于语言和平台 JSON具有自我描述性,更易理解 ...

  4. python数据展示库_收藏!盘点很实用的数据科学Python库

    数据科学是一门研究数据并从中挖掘信息的学科.它不要求自创或学习新的算法,只需要知道怎么样研究数据并解决问题.这一过程的关键点之一就在于使用合适的库.本文概述了数据科学中常用的.并且有一定重要性的库.在 ...

  5. Postgres -- 报错:right sibling‘s left-link doesn‘t match,数据存库失败

    打开数据库,找到报错的那张表. 首先将该表的表结构导出,找到建索引的相关语句.然后右键设计表,找到索引Tab,将所有索引删除,然后通过sql重建索引.无需重启数据库问题即可修复

  6. 解决后台json数据返回的字段需要替换的问题

    有时候后台json数据返回的字段含有"id",也有可能是有时候为了减少代码的冗余,两页面之间只是数据模型个别属性的区别,所以这时候最好是用到模型属性的替换,用新的属性替换返回的js ...

  7. python读取json数据教程_Python教程之解析json数据

    这里先说一下什么是json,其实json是一种跨语言通用的数据格式,它的本质是一个字符串,然而几乎所有的计算机语言都可以将这种json格式的数据转为自己能使用的数据类型,例如在PHP中json字符串可 ...

  8. C/C++之读写JSON数据

    前言 在进行配置文件读取或者进行RPC(Remote Produce Call),我们需要在两个进程间传递大量的数据,这时我们一般会选择json/xml/protobuf来序列化数据,加快数据的传输与 ...

  9. php如何解析JSON数据

    php如何解析JSON数据?本篇文章就给大家介绍PHP解析JSON数据,即编码和解码JSON数据的基本方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 首先我们来了解一下什么是J ...

最新文章

  1. 移动UI设计中的7种主要导航模式
  2. [数位dp] bzoj 3209 花神的数论题
  3. Java 和 Python 疯狂 PK,等等,请不要放弃 C 语言
  4. 研发做好了,产品不一定能卖掉;研发做不好,没东西可卖
  5. 强化学习用于电力系统决策与控制(一)——频率调整
  6. win10 进不了修复服务器失败怎么办,win10自动修复失败开不了机怎么办?win10自动修复失败无限循环解决方法大全...
  7. 【CSDN问答】关于CSDN问答社区的那些事儿
  8. Is Open Source Dying? Case Not Proven
  9. Java 编程技术大全(上)实战练习 cp1-cp3
  10. 配置系统初始化失败0 x84b10001当在Windows上安装SQL Server
  11. 已拿头条offer的研发工程师面经(C++)
  12. 宏基台式计算机编号,ACER如何查询型号名称序列号SNID?
  13. hough函数 matlab,matlab中hough函数
  14. python 布莱克舒尔斯_布莱克-舒尔斯-墨顿期权定价模型
  15. 90后步入中年危机,互联网行业过了30岁就被嫌弃?
  16. 游戏开发培训的两难与探索
  17. 【MACCMS】UA判断 展示判断
  18. arrayQualityMetrics包常用函数
  19. Android Studio 1.5+ 中调试Native和Java代码
  20. Mac安装虚拟机(parallels desk或者VmwareFusion)搭建Openstack服务器管理,安装开源的 pritunl 进行服务器连接

热门文章

  1. 从数据库中查询列表倒序排列(按照时间顺序)
  2. 无人驾驶学习---第一课
  3. 同样嗑B站6个月,被室友吊打 35K Offer!
  4. 广告图片自动轮播控件
  5. 让自己更优秀的 16 条法则(建议收藏)
  6. catkin_make报错: ROS Base path和Source space不一致问题,
  7. 图解图库JanusGraph系列-一文知晓“图数据“底层存储结构(JanusGraph data model)
  8. C++设计模式之工厂模式
  9. 银行排队信息预测系统数学建模
  10. How to set dev_loss_tmo and fast_io_fail_tmo persistently, using a udev rule