做项目的过程中想通过不刷新页面的方式来进行页面数据刷新,开始使用http://www.cnblogs.com/ianduin/p/7761400.html方式将查询结果数据进行序列化。发现可以行,但是后来在项目开发过程中发现使用mymodels.filer(...).values(...)的方式查询数据,在将数据序列化的过程中出现报错‘dict’xxxhas no attr '_meta',最后找到解决方案,在使用json.dumps()转换成json格式数据的时候,先使用list()方法将queryset转换成list后,再使用json.dumps()即可,同时在使用ajax解析数据的时候使用JSON.parse(data)进行解析,即可进行遍历。

以下是我的实例(关键点在实例中已使用蓝色标注)

views.py

import json
from django.core.serializers.json import DjangoJSONEncoder def index(request):
"""index页面"""
return render(request, 'index.html', locals()) def searchurl(request):
if request.method == 'POST':
print(request.POST)
urlname = request.POST['linkname']
urllist = UrlManage.objects.filter(name__contains=urlname).values('name', 'url')
urllist.query.order_by = ['name']
print(urllist)
return HttpResponse(json.dumps(list(urllist), cls=DjangoJSONEncoder, ensure_ascii=False))
else:
print(request.GET)
urllist = UrlManage.objects.all().values('name', 'url')
urllist.query.order_by = ['name']
return HttpResponse(json.dumps(list(urllist), cls=DjangoJSONEncoder, ensure_ascii=False))

index.html

只发布本例中的关键代码


{% extends 'common/base.html' %}
{% block tilte %}G3{% endblock %}
{% block content %}
<div class="container">
<div class="container-fluid">
<form class="form-inline form-horizontal form-group-lg" action="{% url 'index' %}" method="post">{% csrf_token %}
<input class="form-control input-lg form-space" id="linkname" name="linkname" placeholder="请输入环境名称">
{# <input type="submit" class="btn btn-primary form-space" id="search" value="查询">#}
<button class="btn btn-primary input-lg form-space" type="button" id="search">查询</button>
<p style="font-size: 20px; color: red; display: none" id="message">查询条件不能为空!</p>
</form>
</div> <div class="container-fluid" id="result">
</div>
</div> <script>
$(document).ready(function () {
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
$.ajax({
type:'get',
url:'{% url 'searchurl' %}',
success:function (data) {
console.log(data);
console.log(typeof data);
html='';
$.each(JSON.parse(data), function (index, content) {
html += '<div class="col-md-2 form-space"><label class="btn-info btn-lg"><a href="'+content.url+' target="_blank">'+content.name+'</a></label></div>';
});
$('#result').html(html);
},
error:function () {
html = '<h3>查询结果为空!</h3>';
$('#result').html(html);
}
}); $('#search').click(function () {
var lnv = $('#linkname').val();
if(lnv !=""){
$.ajax({
type:'post',
url:'{% url 'searchurl' %}',
data:$('form').serialize(),
success:function (data) {
console.log(data);
console.log(typeof data);
html='';
$.each(JSON.parse(data), function (index, content) {
html += '<div class="col-md-2 form-space"><label class="btn-info btn-lg"><a href="'+content.url+' target="_blank">'+content.name+'</a></label></div>';
});
$('#result').html(html);
},
error:function () {
html = '<h3>查询结果为空!</h3>';
$('#result').html(html);
}
})
}else {
$('#message').show()
}
})
})
</script>
{% endblock %}

djano modles values+ajax实现无页面刷新更新数据的更多相关文章

  1. AjaxPro实现无刷新更新数据

    使用AjaxPro实现无刷新更新数据 需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(J ...

  2. 页面刷新vuex数据消失问题解决方案 之 vuex中间件

    之前我写了一篇用ES6 Proxy方案解决数据同步的文章 页面刷新vuex数据消失问题解决方案. 今天和同事沟通这个vuex数据还原问题,我说我的方法很奇异.聊着聊着,同事咋不用  store.sub ...

  3. 使用sessionStorage解决vuex在页面刷新后数据被清除的问题

    https://www.jb51.net/article/138218.htm 1.原因 2.解决方法 localStorage没有时间期限,除非将它移除,sessionStorage即会话,当浏览器 ...

  4. [转]jquery 点击表格变为input可以修改无刷新更新数据

    原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...

  5. 使用AjaxPro实现无刷新更新数据

    需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(JQuery等)动态更新web页面DOM ...

  6. 页面刷新vuex数据消失问题解决方案

    VBox持续进行中,哀家苦啊,有没有谁给个star. vuex是vue用于数据存储的,和redux充当同样的角色. 最近在VBox开发的时候遇到的问题,页面刷新或者关闭浏览器再次打开的时候数据归零.这 ...

  7. vue 使用localStorage解决vuex在页面刷新后数据被清除的问题

    通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...

  8. 【vue】使用localStorage解决vuex在页面刷新后数据被清除的问题

    通常,我们在使用vue编写页面时,会需要使用vuex在组件间传递(或者说共同响应)同一个数据的变化.例如:用户的登录信息. 下面,我们使用传递用户登录信息的例子来一步步解决这个问题. 首先,我们的第一 ...

  9. vue:vue页面刷新vuex数据消失问题

    vuex中数据刷新页面消失问题:a页面请求的数据保存在vuex中,只要不刷新,那跳转到b页面里也可以用,但如果b页面刷新,那vuex里的数据就会消失,可以得解决方法:a页面用的数据a页面的生命周期函数 ...

随机推荐

  1. 【Hive六】Hive调优小结

    Hive调优 Hive调优 Fetch抓取 本地模式 表的优化 小表.大表Join 大表Join大表 MapJoin Group By Count(Distinct) 去重统计 行列过滤 动态分区调整 ...

  2. DXP常用的设置及快捷键

    原文地址:http://www.cnblogs.com/NickQ/p/8799240.html 测试环境:Altium Designer Summer 16 一.快捷键 1.原理图和PCB通用快捷键 ...

  3. C指针(4)——数据结构中指针的应用(非常重要)

    5-1动态内存分配,分配的是堆内存的空间 分配内存函数 (都集中在库函数 stdlib.h  中) void *malloc (unsigned int num_bytes); //指定分配内存空间大 ...

  4. python3 使用语音库pyttsx3

    python3 使用语音库pyttsx3 环境linux+python3.6 sudo pip install pyttsx3 sudo apt-get install espeak 代码实例 imp ...

  5. CDH集群搭建视频教程 百度云网盘下载

     CDH集群搭建视频教程 百度云网盘下载 链接: http://pan.baidu.com/s/1i5DVBlb   密码:2mny

  6. LeetCode:34. Search for a Range(Medium)

    1. 原题链接 https://leetcode.com/problems/search-for-a-range/description/ 2. 题目要求 给定一个按升序排列的整型数组nums[ ]和 ...

  7. CC3200底板测试-烧写CC3200-LAUNCHXL

    1. 拿到板子,先研究一下几个跳线帽的作用.我在底板上测到VCC_DCDC_3V3和VCC_BRD之间应该有一个跳线帽的,但是在原理上找不到. 2. LED灯的用途,测试的时候,发现这个灯有时候亮,有 ...

  8. 初学Direct X(3)

    初学Direct X(3) 1.获取外设输入--键盘以及鼠标 无论是获取鼠标还是键盘的设备,首先得初始化DirectInput,不过先把必要的环境先配置好: 所要用到的头文件以及库文件是(相比于前两次 ...

  9. 【WXS数据类型】String

    属性: 名称 值类型 说明 [String].constructor [String] 返回值为“String”,表示类型的结构字符串 [String].length [Number] 返回该字符串的 ...

  10. Java Web开发框架Spring+Hibernate整合效果介绍(附源码)(已过期,有更好的)

    最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...