Flask实现Json数据存库和收藏功能

《原神》官网首页练习 完成效果 项目数据 通过ajax请求data中的数据然后通过js动态渲染到页面中 AJAX的封装 请求的主要代码 function getInfo(index) { let message = null; switch (index) { case 0: $ajax({ method: 'get', url: '../data/newest.json', success: function (da 阅读详情

轮播收藏

JSON数据存入数据

import json

import 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 images


def 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_data


def 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 False
        return True
#重写删除
    def delete(self):
        try:
            db.session.delete(self)
            db.session.commit()
        except Exception as e:
            print(e)
            return False
        return 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和username
    movie_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().id
    collects = 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 = None

        if icon:
            try:
            #获取文件的扩展名
                ext = "." + icon.filename.split(".")[-1]
            except Exception as e:
            #默认jpg格式
                ext = ".jpg"

            # path 应该是icon进行了存储操作产生的地址
            path = "/static/icons/" + username + ext
            save_path = "绝对路径" + username + ext
			#存储文件的地址
            icon.save(save_path)
# 文件提交使用enctype属性
<form method="post" action="{{ url_for("users_blue.register") }}" enctype="multipart/form-data">
 ```
使用Flask实现收藏功能和分页功能 Flask实现的功能: user模型的更新(添加收藏功能) posts蓝图的建立 相关模板的更新 添加分页功能 目录结构: 模型user.py更新收藏功能 user.py: # 添加收藏功能 favorites = db.relationship('Posts', secondary='collections', backref=db.backref(... 阅读详情

相关推荐

【Flask】flask接收json,返回json使用postman测试请求

文章目录代码 代码 import json from sina_py3 import sina_api from flask import request @sina_api.route(&amp;quot;/hello_world&amp;quot;) def get_hello_world(): return 'Hello World puke !' @sina_api.route(&amp;quot;/deal_info&amp;quot;,m...

10相濡以沫 5242

mock数据

1.在src文件下创建一个mock文件夹,里面再创建mockServer.js文件和banners.json文件, //mock的具体操作 <a href="http://mockjs.com/">Mock.js官网</a> //banners.json文件 [ { "id|+1": 1, "imgUrl": "@image('720x455', '@color')" } ] //mockServer.js文件 import Mock from "mock

tan_xiao_tan的博客 848

【可不卸载重装】VS2019新建项目里没有CUDA选项

问题:VS2019 新建项目里没有CUDA选项,vs也属性没有cuda。这是因为你在Visual Studio 2019安装之前,先安装了CUDA Toolkit。

qq_62844901的博客 1320

Python+Flask框架Web应用开发

系统介绍基于Flask框架的Web应用开发,小快轻,当然依然水煮风格

架构——异地多活成熟的架构模式

摘要: 本文系统介绍了三种异地多活架构模式:业务定制型、业务通用型和存储通用型。业务定制型针对核心业务定制化设计,复杂度低但扩展性差;业务通用型通过统一配套服务(流量调度、配置中心等)实现多业务兼容,适合业务量大但一致性要求不高的场景;存储通用型依托分布式一致性数据库(如OceanBase、TiDB)天然支持强一致性,适合金融等高要求场景,但对部署距离和成本有较高限制。文章对比了各模式的优缺点及适用场景,为不同业务需求下的架构选型提供了实践指导。

小志的博客 7087

Python爬虫实战:5分钟抓取东方财富股票数据并保存为CSV

在投资分析与量化研究的日常工作中,获取结构化、可用的金融数据往往是第一步。对于个人投资者和量化入门者而言,如何高效获取A股全市场行情,常常面临网页动态加载、反爬机制与数据整理繁琐等挑战。本文从数据采集的基础概念出发,介绍如何利用Python这一通用编程语言,通过requests库请求财经网站公开的HTTP接口,获取返回的JSON数据,再借助pandas进行字段映射、数据清洗与表格化处理。这种方式相比传统页面解析具有响应快、结构稳定、易于批量操作的显著优势,尤其适合构建个人股票数据池、验证选股策略或进行市场情

weixin_33146151的博客 251

学习笔记:Flask返回json及设置session

Flask 关于session的操作非常简单,大家简单化思维 下面是我给大家总结的session的操作方法,仅供参考 session['username']=username #设置 print(session.get('username')) #读取 session.clear #清除 session.pop('username') #删除 session.permanent ...

别把代码当饭吃 633

Boost变换电路在新能源车充电系统中的创新应用与挑战

本文探讨了Boost变换电路在新能源车充电系统中的创新应用与挑战,重点分析了其在高压快充、能量回收等场景中的技术突破。通过电力电子仿真和新型器件应用,如SiC MOSFET,显著提升了功率密度和转换效率。同时,文章还深入讨论了电磁兼容性(EMC)挑战及智能控制算法的实际应用,为新能源车充电系统的优化提供了实用解决方案。

7z8x2c4v6b9的博客 217

4-读取、修改、保存 .json文件

【代码】4-读取、修改、保存 .json文件。

m0_46653846的博客 3363

ICCompiler II实战:从NDM生成到APR流程的完整避坑指南

本文是一份针对ICCompiler II(ICC II)后端物理实现流程的实战避坑指南。文章详细解析了从NDM库生成、设计初始化、布局规划到时钟树综合与布线的完整APR流程,重点分享了各环节的常见陷阱、精细化配置命令与调试经验,旨在帮助工程师高效达成PPA目标,确保设计一次成功。

p4q5r6s7t的博客 531

深入大模型-19-Windows10中安装OpenClaw-CN配置接入智谱免费大模型

OpenClaw CN (中国社区版) 是 OpenClaw 的本地化维护版本,针对国内网络环境进行了深度优化,源码级原生支持 DeepSeek/Qwen 等国产大模型,致力于让中国开发者拥有最顺滑的 Agent 开发体验。

qq_20466211的博客 771

flask中jsonify和json区别

JSON数据结构 要把json与字典区分开来 dumps(字典转换成Json) loads(Json转换成字典) 参考: Python 的字典是一种数据结构,JSON 是一种数据格式。 json 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而 python 的字典的字符串表现形式的规则看上去和 json 类似,但是字典本身是一个完整的数据结构,实现了一切自身该有的算法。 Python的字典key可以是任意可hash对象,json只能是字符串。 形式上有些相像,但JSO

sa726663676的博客 1210

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 584

Flask 使用json或者jsonify返回json响应数据的方法

在前后端分离的时代,后端一般返回前端的数据就是json格式的响应数据。 而json格式的响应数据其实实际上就是一个字符串。 要知道Flask如何返回json响应数据,首先就需要知道如何将字典dict转化为json字符串。 使用json库将dict转为json字符串 In [1]: import json In [2]: data = {"user_name":"libai", "user...

DevOps海洋的渔夫@专栏 7041

智元机器人开源具身仿真框架 Genie Sim 入门教程

GenieSim是AgiBot推出的具身智能仿真框架,提供完整闭环开发管道,包括轨迹生成、模型训练和基准测试。框架支持Docker容器化部署,要求Ubuntu 22.04和NVIDIA硬件环境。主要功能涵盖: 支持12种基准测试任务 提供ADER评估框架 集成UniVLA/RDT等基线模型 支持PICO/键盘遥操作 具备轨迹记录回放功能 提供完整API控制接口 开发者可通过Hugging Face获取场景资产,使用标准化ROS主题与仿真环境交互。框架特别优化了碰撞检测和抓取物理模拟,适用于从简单抓取到复杂操

2506_90492529的博客 2542

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python 使用 flask 库传递 JSON 数据

mywang88 2019-05-11 简介 本例简单示范了基于 Python 的 flask 库,搭建 web 服务,并通过 POST 请求传递 JSON 格式数据的过程。 代码 主程序 main.py : from flask import Flask, request, jsonify from settings import APP_PORT # 创建一个服务 app = Flask(_...

mywang88的博客 6370

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Flask项目】收藏功能 # 14

实现收藏,取消收藏功能

MoShyoKi的博客 861

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【python】Json库学习

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。:将Python对象转换为JSON格式的字符串(编码),或者将JSON格式的字符串转换为Python对象(解码)。:能够读取和写入JSON格式的文件。

MAOZI8的博客 1069

Flask中的JSON格式

Flask 是一个轻量级的 Python Web 框架,它常用于构建 web 应用的后端。JSON 格式的数据是一种文本格式,它通常由键值对(key-value pairs)组成,能够轻松地在不同平台间传输数据。在 Flask 中,后端返回 JSON 数据通常是通过 函数来实现的。返回的 JSON 格式数据会作为 HTTP 响应返回给前端。例如: 在这个例子中, 返回了一个 JSON 格式的数据响应。在实际开发中,后端传输的 JSON 数据通常包含以下几个常见字段,每个字段都有特定的作用:作用:表示请求的

m0_73442527的博客 1186

python返回json数据_python和flask中返回JSON数据的方法

在python中可以使用json将数据格式化为JSON格式:1.将字典转换成JSON数据格式:s=['张三','年龄','姓名']t={}t['data']=sreturn json.dumps(t,ensure_ascii=False)2.将列表转换成JSON数据格式:s=['张三','年龄','姓名']return json.dumps(s,ensure_ascii=False)使用json转...

weixin_39833454的博客 760

【Python】json库介绍及用法

JSON代表JavaScript Object Notation。JSON是一种基于文本的数据交换格式,旨在使数据易于读取和编写。JSON通常被用于在Web应用程序中发送和接收数据。JSON的基础是“名称/值”对(类似于Python中的字典)和数组(类似于Python中的列表)。JSON的数据格式既可以表示简单的数据类型,如字符串、数字、布尔值和null,也可以表示复杂的数据如列表和对象。

qq_53871375的博客 1500

Flask中jsonify和json.dumps用法以及区别(简单案例)

环境:python3.6, Flask1.0.3 flask提供了jsonify函数供用户处理返回的序列化json数据, 而python自带的json库中也有dumps方法可以序列化json对象. 其二者的区别,写个简单的案例实测一下便见分晓。 from flask import Flask from flask import jsonify import json app=F...

大蛇王的博客 2万+

Python的pandas库来实现将Excel文件转换为JSON格式的操作

使用Python的pandas库来实现将Excel文件转换为JSON格式的操作。以下是一个简单的示例代码:首先,确保您已经安装了pandas库。

不迁怒,不贰过。小知识,大智慧。 3387

html5 flask json文件读取,flask框架json数据的拿取和返回操作示例

本文实例讲述了flask框架json数据的拿取和返回操作。分享给大家供大家参考,具体如下:json数据结构:以套票票网站的城市数据为例,拿到数据莫慌,1 先分析数据结构,有几个大的字段(‘returnCode'和‘retuenValue'字段,只有一个字段作为定义,另一个字段作为保留(无需处理)2 键表----> 拆分'returnValue‘确定数据库表结构,('A‘[]城市首字母表 和...

weixin_29238147的博客 1131

使用Flask的jsonify函数返回JSON数据

Flask的jsonify函数是将Python对象转换为符合JSON规范的字符串,并设置正确的HTTP响应头。在创建路由时,使用jsonify函数方便地将数据转换为JSON格式,并通过设置HTTP响应头的Content-Type字段为application/json表示返回的数据是JSON类型。这样可以确保客户端正确解析返回的JSON数据,使得开发基于Flask的Web API变得更加简单和高效。

Code掘金的博客 3177

使用 Flask 实现数据发送和接收

本文档提供了使用 Flask 实现数据发送和接收功能的逐步指南。通过按照这些步骤操作,可以创建一个简单的 API 来发送和存储数据,增强Python 应用程序的交互性。此外,可以通过添加更多端点和根据需求实现其他功能来扩展此功能。本技术文档提供了使用 Flask 框架在 Python 中实现数据发送和接收功能的指南。该集成包括创建一个 API 端点来接收 JSON 数据并将其存储在列表中,以及一个客户端函数来将数据发送到此端点。 在您的系统上安装了 Python(推荐版本为 3.x)

weixin_44217158的博客 940
上一篇: python框架经典案例
下一篇: Flak模型和应用(一对一,一对多,多对多)
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值