djano modles values+ajax实现无页面刷新更新数据

时间:2022-03-08 01:00:48

做项目的过程中想通过不刷新页面的方式来进行页面数据刷新,开始使用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. &lbrack;转&rsqb;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. 搭建基于 STM32 和 rt-thread 的开发平台

    我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的 ...

  2. Spring MVC学习笔记——注解式控制器

  3. 四种方案解决ScrollView嵌套ListView问题(转)

    以下文章转自@安卓泡面 在工作中,曾多次碰到ScrollView嵌套ListView的问题,网上的解决方法有很多种,但是杂而不全.我试过很多种方法,它们各有利弊. 在这里我将会从使用ScrollVie ...

  4. RabbitMQ(三)

    官方的使用教程(测试运行) 1."Hello World!" -- 发送接收 We're about to tell the server to deliver us the me ...

  5. poj 2488A Knight&&num;39&semi;s Journey

    #include<cstdio> #include<cstring> #define MAXN 26 using namespace std; ,,-,,-,,-,}; ,-, ...

  6. ThinkPHP - URL - 伪静态 - 路由 - 重写

    URL: 一.URL规则 1.默认是区分大小写,可以修改(配置文件)为不区分大小写. 2. //修改URL大小写问题 'URL_CASE_INSENSITIVE' =>true, 如果模块名为 ...

  7. simple-spa 一个简单的单页应用实例

    上两篇文章说过要写一个简单的单页应用例子的, 迟迟没有兑诺, 实在有愧 哈哈.这篇写给小白用户哈. 正好趁今天风和日丽,事情不多, 把从项目里的代码扣取了一下, 整理了一个简单的例子.因为我们生产项目 ...

  8. kmp模式串匹配

    大二的时候百度看不懂,现在大三下学期了百度也看不懂.(实在是不能理解这个next数组究竟是怎么样工作的,为什么会得出那样的结果.)如果有好心人知道的话希望可以联系我告诉我(邮箱:4609019410@ ...

  9. springcloud中概念辨析

    1 什么是微服务? 微服务架构是一种架构模式或者一种架构风格,他提倡将单一应用程序划分成一组小的服务,每个服务运行在独立进程中,服务之间相互协调.相互配合.服务之间采用轻量级的通信机制(一般是基于HT ...

  10. Python面向对象的三大特征 --- 封装、继承、多态

    一.封装 1)封装:是面向对象的一大特点:将属性和方法封装在一个抽象类中.外界使用类创建对象,然后让对象调用内部方法.对象方法的细节都被封装在类的内部. class Person():   def _ ...