需要通过ajax实现局部刷新

js代码

$('#guo-sou-ajax').click(function(){   #获取id为guo-sou-ajax点击后的信号
console.log($(this).attr("data-action"))
$.ajax({ #调用ajax
url: $(this).attr("data-action"), #url保存在标签里面的data-action属性里
type: 'POST', #类别为POST请求
data:{ #提交的数据
'number':$('#number_guo_ajax').val(),
'Devicenumber':$('#Devicenumber_guo_ajax').val(),
'starttime':$('#starttime_guo_ajax').val(),
'endtime':$('#endtime_guo_ajax').val(),
'State':$('#State_guo_ajax').val(),
'csrfmiddlewaretoken': $('[name="csrfmiddlewaretoken"]').val() #这是django的csrf_token },
success:function(data){ #提交成功执行的方法 var latest_report = JSON.parse(data); #将后端发送过来的json字符串转换为json对象 var tr_html = ''; var url = $('#models_guo_from1').attr('action'); var csrfmiddlewaretoken = $('[name="csrfmiddlewaretoken"]').val()
$('.guo-models-1').empty(); #删除class为guo-models-1的字标签,就是删除原先的数据 for (var i = 0; i < latest_report.subclass.length; i++) {
    report_info = latest_report.subclass[i];
    tr_html += '<td class="guo-td-1"><center>' + report_info.id + '</center></td><td class="guo-td-2"><center>' + report_info.number + '</center></td><td class="guo-td"><center>' + report_info.name + '</center></td><td class="guo-td"><center>' + report_info.DeviceID + '</center></td><td class="guo-td"><center>' + report_info.State + '</center></td><td class="guo-td"><center>' + report_info.Type + '</center></td><td class="guo-td"><center>' + report_info.Money + '元</center></td><td class="guo-td"><center>' + report_info.endtime + '</center></td>' + '<td class="guo-td"><div><form method="post" action='+ url +'><input type="hidden" name="csrfmiddlewaretoken" value='+ csrfmiddlewaretoken +'><input type="hidden" name="id" value='+ report_info.id +'><center><input type="submit" value="查看详细信息"></center></form></div></td>'; }
$('.guo-models-1').html(tr_html); #将上面定义好的HTML插入到被删除的区域就实现了局部刷新了
},
})
})

简单来说就是通过ajax请求后端,然后将后端发送过来的数据写入到里面

html代码

{% extends 'xproject/base.html' %}
{% load i18n static %}
{% block title %} subclass details {% endblock %}
{% block tag %}交易管理{% endblock %}
{% block content %}
<div class="guo-subclass">
<h1><a href="#">消费列表</a></h1>
</div>
<div class="guo-sou-1">
<button type="submit">导出数据</button>
<!--<div class="guo-sou-2"><button type="submit">导出数据</button></div>-->
<div class="guo-sou-3">
<form method="post" action="{% url 'xproject:transaction'%}">
{% csrf_token %}
<label>流水号</label>
<input type="text" name="number" value="" class="guo-input-1" id="number_guo_ajax">
<label>设备号</label>
<input type="text" name="Devicenumber" value="" class="guo-input-1" id="Devicenumber_guo_ajax">
<!--<label>支付订单号:</label>-->
<!--<input type="text" name="POnumber" value="" class="guo-input-1">-->
<label>交易完成时间</label>
<input type="date" name="starttime" value="" class="guo-input-2" id="starttime_guo_ajax">
<input type="date" name="endtime" value="" class="guo-input-2" id="endtime_guo_ajax">
<label>支付状态</label>
<select name="State" class="guo-select-1" id="State_guo_ajax">
<option value="">-----</option>
<option value="to poy">to poy</option>
<option value="To be paid">To be paid</option>
<option value="Refund">Refund</option>
</select>
<button type="button" id="guo-sou-ajax" data-action="{% url 'xproject:transaction_ajax'%}">搜索</button>
</form>
</div>
</div>
<div class="guo-list">
<table class="guo-table-1">
<tr>
<th class="guo-td"><center>序号</center></th>
<th class="guo-td"><center>流水号</center></th>
<th class="guo-td"><center>用户昵称</center></th>
<th class="guo-td"><center>设备号</center></th>
<th class="guo-td"><center>状态</center></th>
<th class="guo-td"><center>交易类型</center></th>
<th class="guo-td"><center>交易金额</center></th>
<th class="guo-td"><center>交易完成时间</center></th>
<th class="guo-td"><center>操作</center></th>
</tr>
{% for subclass in subclass_s %}
<tr class="guo-models-1">
<td class="guo-td-1"><center>{{ subclass.id }}</center></td>
<td class="guo-td-2" ><center>{{ subclass.number }}</center></td>
<td class="guo-td" ><center>{{ subclass.normalUser.username }}</center></td>
<td class="guo-td"><center>{{ subclass.deviceInfo.DeviceID }}</center></td>
<td class="guo-td"><center>{{ subclass.State }}</center></td>
<td class="guo-td"><center>{{ subclass.Type }}</center></td>
<td class="guo-td"><center>{{ subclass.Money }}元</center></td>
<td class="guo-td"><center>{{ subclass.endtime|date:'Y-m-d H:i'}}</center></td>
<td class="guo-td">
<div>
<form method="post" action="{% url 'xproject:all'%}" id="models_guo_from1">
{% csrf_token %}
<input type="hidden" name="id" value="{{ subclass.id }}">
<center><input type="submit" value="查看详细信息"></center>
</form>
</div>
</td>
</tr> {% endfor %}
</table>
<div class="pagination">
<span class="step-links_s">
{% if subclass_s.has_previous %}
<button type="submit"><a href="?page=1">首页</a></button>
{% else %}
<button type="button"><a style="color:gray;" href="#">首页</a></button>
{% endif %} </span>
<span class="step-links_s">
{% if subclass_s.has_previous %}
<button type="submit"><a href="?page={{ subclass_s.previous_page_number }}">上一页</a></button>
{% else %}
<button type="button"><a style="color:gray;" href="#">上一页</a></button>
{% endif %} <span class="step-links_s">
Page {{ subclass_s.number }} of {{ subclass_s.paginator.num_pages }}
</span> {% if subclass_s.has_next %}
<button type="submit" id="guo-page-report"><a href="?page={{ subclass_s.next_page_number }}">下一页</a></button>
{% else %}
<button type="button"><a style="color:gray;" href="#">下一页</a></button>
{% endif %}
</span>
<span class="step-links_s">
{% if subclass_s.has_next %}
<button type="submit"><a href="?page={{ subclass_s.paginator.num_pages }}">末页</a></button>
{% else %}
<button type="button"><a style="color:gray;" href="#">末页</a></button>
{% endif %} </span>
<form method="get" action="{% url 'xproject:transaction' %}" class="guo-form-page">
<input class="guo-page-input-1" name="page" type="text" >
<button type="submit">跳转</button>
</form>
</div>
</div> {% endblock %}

Django的views处理

@login_required
def transaction_ajax(request):
if request.method == 'POST':
number = request.POST.get('number')
Devicenumber = request.POST.get('Devicenumber')
starttime = request.POST.get("starttime")
endtime = request.POST.get("endtime")
State = request.POST.get("State")
subclass_s = models.subclass_details.objects.all()
if starttime != '' and subclass_s != '' or endtime != '' and subclass_s != '':
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2099, 12, 29)
if starttime != '':
list = starttime.split('-')
start_date = datetime.date(int(list[0]), int(list[1]), int(list[2]))
if endtime != '':
list1 = endtime.split('-')
end_date = datetime.date(int(list1[0]), int(list1[1]), int(list1[2]))
subclass_s = subclass_s.filter(endtime__range=(start_date, end_date))
if number != '' and subclass_s != '':
try:
subclass_s = subclass_s.filter(number=number)
except:
subclass_s =subclass_s
if Devicenumber != '' and subclass_s != '':
try:
subclass_s = subclass_s.filter(Devicenumber=Devicenumber)
except:
subclass_s = subclass_s
if starttime != '' and subclass_s != '':
try:
subclass_s = subclass_s.filter()
except:
subclass_s = subclass_s
if State != '' and subclass_s != '':
try:
subclass_s = subclass_s.filter(State=State)
except:
subclass_s = subclass_s
list = []
for subclass in subclass_s:
date = {
'id':subclass.id,
'number': subclass.number,
'name':subclass.normalUser.username,
'DeviceID':subclass.deviceInfo.DeviceID,
'State':subclass.State,
'Type':subclass.Type,
'Money':str(subclass.Money),
'endtime':timezone.localtime(value=subclass.endtime).strftime("%Y-%m-%d %H:%M")
} list.append(date)
jsonz = {"subclass":list}
print(jsonz) return HttpResponse(json.dumps(jsonz))

通过这样我们可以直接跟后台交互数据实现ajax

Django 的简单ajax的更多相关文章

  1. Django中的Ajax

    Ajax 很多时候,我们在网页上请求操作时,不需要刷新页面.实现这种功能的技术就要Ajax!(本人定义,不可迷信) jQuery中的ajax就可以实现不刷新页面就能向后台请求或提交数据的功能,我们仍然 ...

  2. django中的ajax组件

    目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...

  3. Django框架 之 Ajax

    Django框架 之 Ajax 浏览目录 AJAX准备知识 AJAX与XML的比较 AJAX简介 jQuery实现的ajax AJAX参数 AJAX请求如何设置csrf_token 序列化 一.AJA ...

  4. Django的日常-AJAX

    目录 Django的日常-AJAX AJAX简介 AJAX与JQ的一个实例 AJAX与contentType AJAX传json格式 AJAX传文件 Django的日常-AJAX AJAX简介 首先A ...

  5. Django - Django框架 简单介绍

    Django框架 简单介绍 本文地址: http://blog.csdn.net/caroline_wendy/article/details/29172271 1. 介绍 Django是一个开放源码 ...

  6. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  7. django的简单原理

    一.自定义客户端和服务端的请求响应 1.客户端打开url,向服务器发出请求 2.服务端用socket写一个py,用于接收请求和做出响应 3.服务端接收请求 4.服务端模拟HTTP协议做出响应,状态行为 ...

  8. Django中简单添加HTML、css、js等文件(非正规添加,适合小白)

    Django中简单添加HTML.css.js等文件 首先申明下自己的环境, python版本3.65(亲测3.7版本有毒,没解决掉!) Django版本1.11.15(版本比较成熟,也可以用最新的版本 ...

  9. 基于ThinkPHP3.23的简单ajax登陆案例

    本文将给小伙伴们做一个基于ThinkPHP3.2.的简单ajax登陆demo.闲话不多说.直接进入正文吧. 可能有些小伙伴认为TP自带的跳转页面挺好,但是站在网站安全的角度来说,我们不应该让会员看到任 ...

随机推荐

  1. wpf图片定点缩放

    去年犯小人,万事不顺,4月刚换工作,开始新工作 遇到一个小问题,需要读取图片,然后对图片进行定点缩放,很简答的逻辑,很简单的代码,但是,这尼玛我被wpf给坑了,这一坑就是三天 好了,很简单的一个UI ...

  2. 值域线段树 bzoj 4627

    这是题目链接4627: [BeiJing2016]回转寿司 题目大意: 给定n个数,求有多少个字段和在 满足 L<=sum<=R; 解题思路 需要解这个题目,需要有线段树加可持续化的思想, ...

  3. HDU2147 kiki's game (SG表找规律)

    Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes th ...

  4. Java笔记(六)

    IO流: 字符流和字节流: 字符流两个基类: InputStream OutputStream 字节流两个基类: Reader Writer FileWriter: import java.io.Fi ...

  5. LiveCD、LiveDVD和BinDVD区别在哪里

    本文转载自: http://www.kankanews.com/ICkengine/archives/86968.shtml 1.CentOS系统镜像有两个,安装系统只用到第一个镜像即CentOS-6 ...

  6. MongoDB Oplog

    Capped Collections MongoDB有一种特殊的Collection叫Capped collections,它的插入速度非常快,基本和磁盘的写入速度差不多,并且支持按照插入顺序高效的查 ...

  7. ETL 循环导入 平面文件

    http://blog.csdn.net/zlp321002/article/details/3413365 ETL设计之-Foreach 循环容器 应用场景: 批量导入某一文件夹下的所有文件.就可以 ...

  8. dubbo 学习笔记 -- provider端

    服务端的配置文件:    provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...

  9. Linux系统如何查看版本信息?

    查看版本号 我在Ubuntu下做测试 1 命令行执行 cat /etc/issue  (切记cat后要空一格)即可看到版本信息. 2 登录linux,在终端输入 cat /proc/version  ...

  10. Identity Server 4 原理和实战(完结)_建立Angular 客户端

    https://material.angular.io/ 第一部是安装angular cli --prefix=ac:前缀 --routing:默认使用路由 style=scss:样式使用scss - ...