django--如何将数据结果集序列化传给前端页面展示

示例为一对多的表关系,学生为多,老师为一,设置外键字段可以为空,也就是说关联的老师被删除该学生依然存在,只是相应字段留空

class Teacher(models.Model):
    name = models.CharField(max_length=10,verbose_name=‘老师名称‘)
    password = models.CharField(max_length=10,verbose_name=‘密码‘)
    class Meta:
        verbose_name_plural = ‘教师表‘
    def __str__(self):
        return self.name
class Student(models.Model):
    teacher = models.ForeignKey(to=Teacher,on_delete=models.SET_NULL,null=True,verbose_name=‘教师‘)
    name = models.CharField(max_length=10,verbose_name=‘学生名字‘)
    age = models.IntegerField(verbose_name=‘年龄‘)
    class Meta:
        verbose_name_plural = ‘学生表‘
    def __str__(self):
        return self.name
     teacher = models.Teacher.objects.get(pk=id)     # id=id的某位老师
        students = teacher.student_set.all()        # 以一表反向查询多表,查询这位老师的学生

此时,all()返回的是一个结果集。<QuerySet [<Student: 学生1>, <Student: 学生22>, <Student: 学生3>, <Student: 学生44>]>

这里要将这个结果传给前端ajax需要先将其转成json格式,但是这样的一个结果集又不能使用json.dumps的。

我的方法是先给它转成列表嵌套字典再进行序列化操作

def index(request):
    if request.method == "GET":
        teacher_name = request.session.get(‘name‘)
        teacher = models.Teacher.objects.get(name=teacher_name)
        students = teacher.student_set.all()
        print(students)
        list = []
        for i in students:
            json_dict = {}
            json_dict[‘name‘] = i.name
            json_dict[‘age‘] = i.age
            list.append(json_dict)
        return JsonResponse(list,safe=False)    # 这里safe默认为True,只接受参数为dict字典类型,非dict类型---“报错:In order to allow non-dict objects to be serialized set the safe parameter to False.” safe=False之后list列表, tuple元祖, set集合就都可以

前端ajax接收参数,并且循环变量当前传过去的列表

$(‘#submit2‘).click(function(){
            $.ajax({
                url:‘/app1/index/‘,
                type:‘GET‘,
                success:function(res){
                    console.log(res)
                    var str = ‘‘
                    for(var i = 0; i < res.length; i++){         # js中的for循环
                        str += ‘<li>‘  + res[i][‘name‘] + ‘</li>‘
                        }
                        $(‘#students‘).html(str)
                }
            })           

        })

渲染效果如下图所示

    <button id="submit2">点击查看我的学生</button>
    <p id="students"></p>  

就是这个小小的按钮,竟然在背后做了这么多事情,使得我们要的信息成功的展示在了下面的标签里

所以任何一份职业都不容易,没有小角色,都是大人物

原文地址:https://www.cnblogs.com/lutt/p/10743658.html

时间: 2024-10-29 19:12:10

django--如何将数据结果集序列化传给前端页面展示的相关文章

使用原生ajax访问后台数据并将其展现在前端页面中(小菜鸟自己整理玩的,大神勿喷)

首先你要有php的环境,关于php环境的搭建,php本地站点的搭建,此处不再重复请看这里:http://www.cnblogs.com/Gabriel-Wei/p/5950465.html我们把wamp打开,并且在Dreamweaver里面新建一个phpStudy站点.这篇文章我们需要两个文件,一个test.html前端的页面,一个tigong.php数据的提供页,下面分别进行介绍. tigong.php我们在Dreamweaver,phpStudy站点下面,新建一个tigong.php页面,里

前端页面展示MySQL数据并实现前后端互动

前端页面使用H-ui框架  后端使用flask框架  数据库使用mysql  连接数据库通过pymysql实现 前端代码如下 <html lang="en"> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv=&quo

SSM框架以json格式传给前端页面

配置文件和由Mybatis逆向工程生成了相关的代码见  登录实现 关键的是在Controller层的方法上加入@ResponseBody注解实现json格式 在控制台输出的json格式数据 index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath();

继上一篇Django的数据库数据的编辑和删除

继上一篇Django的数据库数据的编辑和删除 首先需要写一个能够展示数据库一张表中所有数据的 html 页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jq

大数据工具集详

查询引擎 一.Phoenix 贡献者::Salesforce 简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询.Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动. Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集.直接使用HBase API.协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒. Ph

Django 前后台的数据传递

严正声明:作者:psklf出处: http://www.cnblogs.com/psklf/archive/2016/05/30/5542612.html欢迎转载,但未经作者同意,必须保留此段声明:必须在文章中给出原文连接:否则必究法律责任! Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: from django.shortcuts import render def main_page(request): return render(request, 'ind

跟我一起学WCF(7)——WCF数据契约与序列化详解

一.引言 在前面博文介绍到,WCF的契约包括操作契约.数据契约.消息契约和错误契约,前面一篇博文已经结束了操作契约的介绍,接下来自然就是介绍数据契约了.所以本文要分享的内容就是数据契约. 二.数据契约的介绍 在WCF中,服务契约定义了可供调用的服务操作方法,而数据契约则是定义了服务端和客户端之间传送的自定义类型,在WCF项目中,必不可少地是传递数据,把客户端需要传递的数据传送到服务中,服务接收到数据再对其进行处理.然而在WCF中,传递的类型必须标记为DataContractAttribute属性

Django项目实战之用户头像上传与访问

1 将文件保存到服务器本地 upload.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> <form action="" method="post" enctype="multipart/form-data">

(转)Django 前后台的数据传递

Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: from django.shortcuts import render def main_page(request): return render(request, 'index.html') 这个就是返回index.html的内容,但是如果要带一些数据一起传给前台的话,该怎么办呢? 一 view -> HTML 使用Django模版 这里是这样:后台传递一些数据给html,直接渲染在网页上,不会有什么复杂的数据处