1、这里只是简单介绍一下Django的view如何跟js进行交互,首先,进入用户明细的时候会进入一个页面,叫用户信息表,里面包含了用户学习的课程和所得到的分数,每门课程对应一个分数,其中课程用下拉框依次显示,选择课程时动态显示课程的分数,django view部分代码如下:

def user_info(request, userid):if request.method == "GET":user = User.objects.get(userid=userid)user_info = UserInfo.objects.get(userid=userid)content = {"user": user, "user_info": user_info}detail_data = {}data = []for detail in user_info:detail_data['course'] = detail.coursedetail_data['score'] = str(detail.score)data.append(json.dumps(detail_data, ensure_ascii=False))content['detail'] = datareturn render(request, "user/user_info/user_info.html", content)

其中,需注意的是下面这段代码,

(1)、定义一个空的字典为detail_data,接着再定义一个空的列表data,循环得到每个用户信息的详情,也就是用户的每个课程对应的每个分数,分别把值添加进字典里面去。

(2)、后面在把字典的值通过json.dumps转换为json格式,这样才能给html页面的js进行交互,而且如果有中文的话,需要在后面加个ensure_ascii=False参数,不然的话js得到的数据不是我们想得到的数据。

(3)、最后,再把转成json的字典数据添加进列表data中,最后通过content['detail']=data把这个列表传到页面上,供js调用。

        detail_data = {}data = []for detail in user_info:detail_data['course'] = detail.coursedetail_data['score'] = str(detail.score)data.append(json.dumps(detail_data, ensure_ascii=False))content['detail'] = data

2、接下来看下html中如何处理上面传过的detail数据,其中课程用下拉框依次显示,选择课程时动态显示课程的分数,代码如下:

    <script>function select() {var course =$('#course option:selected').val();var details = {{ detail|safe }}for(var detail in details){var data = JSON.parse(details[detail]);if(course == data.course){$('#score').html(data.score);}}}</script>

代码解析一下:

(1)、其中获取下拉框选择的课程值,赋给一个变量course,接着把传过来界面的detail,赋给一个变量details,注意这里必须要用{{ detail|safe }},不然取出来的数据会不是想要的。

(2)、接着,循环上面得到的变量,也就是一个带有字典的列表,循环就得到每一个带有课程和课程分数的字典,因为在view底下是把每一个字典转换为json格式,所以现在必须把循环得到每一个字典通过json解析得到其对应的,通过JSON.parse(details[detail]),否则也是取不到对应的数据。

(3)、通过页面下拉框选择的课程值,跟取到的每个课程的分数做比较,相等的话,就取出对应课程的分数,填充进页面中。

3、Django和js交互的网上例子太少,这里积累一下,以上内容仅供学习参考,谢谢!主要还是自己去尝试。

Django 后台带有字典的列表数据与页面js交互相关推荐

  1. DJANGO后台ADMIN下拉三级联动,纯JS,没有AJAX数据库回显,目前为止最简单的做法

    网上有很多的DJANGO下拉三级联动,但是都涉及到数据库回显数据操作,操作复杂,本例子是把下拉数据写在JS中,很简单,不需要修改后台太多文件,最下面是一个正常的HTML下拉三级联动文件,我们在这个文件 ...

  2. django后台查询日期字符串列表传到前台模版不能显示的解决(#x27)

    问题: django从数据库查出日期并转换为字符串的list后,传到前台模版发现不能正常显示: 后台传的数据: ['11:13:15', '11:13:17', '11:13:20', '11:13: ...

  3. ant-design中对单个或多个table列表数据进行动态列合并

    文章目录 一. 实现效果 二. 实现方法 2.1 版本:ant-design-vue:"^2.1.2" 2.2 方法:a-table组件里面的customCell功能 2.3 注意 ...

  4. python中使用zip函数基于两个列表数据list创建字典dict数据(Create a dictionary by passing the output of zip to dict)

    python中使用zip函数基于两个列表数据list创建字典dict数据(Create a dictionary by passing the output of zip to dict) 目录

  5. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  6. python读取json格式文件大量数据,以及python字典和列表嵌套用法详解

    1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...

  7. python爬虫,记录一下爬取过程,列表数据,翻页,post方式,保存字典

    记录一下自己的爬虫的过程把,最近在做个项目. 要爬取的网站比较简单. 其中的问题是: post方式,网站的数据有一些需要使用post方式才能获得. 比如, 这部分要看到<发起的项目>,需要 ...

  8. django之 将字典数据导入数据库以及解决insert自动增长的id不是从1开始或不连续

    当我对mysql数据库进行insert插入操作时,发现insert自动增长的id不是从1开始或不连续 这个是我对我的mysql中的数据库zx里的configuration表进行insert字典格式的数 ...

  9. 如何使用Django显示来自DigitalOcean API的数据

    The author selected the Mozilla Foundation to receive a donation as part of the Write for DOnations ...

最新文章

  1. 《Python数据科学指南》——1.16 使用lambda创造匿名函数
  2. B - 数据结构实验之查找二:平衡二叉树
  3. maven打包时加入依赖包及加入本地依赖包
  4. oracle ebs技术开发,Oracle EBS应用架构技术方案.pdf
  5. android JNI(转)
  6. 快递取件码生成软件_一种自动生成取件码的快递柜及其使用方法与流程
  7. 深入.NET平台和C#编程笔记 第七章 深入理解多态
  8. 关于c语言循环的格式,关于for循环的格式
  9. 监护仪系统都是Linux吗,基于Linux和MiniGUI的心电监护仪设计 (1)
  10. 利用PhotoShop批量压缩和转换图片格式
  11. 打印服务器后台程序没有运行,打印后台程序服务没有运行
  12. 维特智能六轴加速度电子陀螺仪传感器姿态倾角温补传感器模块JY60
  13. ime输入法android,创建输入法  |  Android 开发者  |  Android Developers
  14. Various Image/Video Caption(视觉字幕化新任务)
  15. QQ空间、新浪微博、腾讯微博等一键分享API链接代码
  16. background图片叠加_css在图片上叠加层(其他图标)
  17. uniapp开发技术
  18. 中产学院全国首创7大黄金技术桂林游学发布会
  19. 【NLP】Pre-train,Prompt,and Predict
  20. Adobe2023全家桶win及Mac系统安装包下载及安装教程ps、pr、ai、ae安装包下载

热门文章

  1. [目录]搭建一个简单的WebGIS应用程序
  2. 微擎框架小程序 入口
  3. QT_StepByStep(2)--滑动杆的实现
  4. javascript 代码可读性
  5. 指向函数的指针数组(C++)
  6. C++函数指针和类成员函数指针
  7. gridview使用经验
  8. vue.js:634 [Vue warn]: Error in render: “TypeError: Cannot read property ‘matched‘ of undefined“
  9. IE overflow:hidden失效的解决方法:
  10. LeetCode--151. 翻转字符串里的单词(字符串翻转,字符串分割)