需要通过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. 理解数学公式与numpy矩阵运算

    1.矩阵的初始化 (1)创建一个 3*5的全0矩阵和全1矩阵 import numpy as np myzero = np.zeros([3,5]) print myzero myones = np. ...

  2. 10个常见的 Android 新手误区

    在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的开发社区,以及从所周知的编程语言(Java),使得开发A ...

  3. 第二篇:python基础之核心风格

    阅读目录 一.语句和语法 二.变量定义与赋值 三.内存管理 内存管理: 引用计数: 简单例子 四.python对象 五.标识符 六.专用下划线标识符 七.编写模块基本风格 八.示范 一.语句和语法 # ...

  4. 【概念】SVG(2)

    Style <svg width="200" height="200" xmlns="http://www.w3.org/2000/svg&qu ...

  5. 【CQ18高一暑假前挑战赛3.5】标程

    [A:快速幂相关] #include<bits/stdc++.h> using namespace std; int qpow(int a,int x){ a%=;; while(x){ ...

  6. bzoj 1014 [JSOI2008]火星人prefix——splay+哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1014 用splay维护字符串,每个点记录子树的哈希值,然后二分查询. 二分不是把两个点的哈希 ...

  7. VS中文档大纲视图的作用

    一.在vs的菜单栏中点击视图==========>其他窗口===========>文档大纲 二.文档大纲的作用是可以查看当前Form窗体的结构,如下图 三.若果感觉控件的类型太长,可以在文 ...

  8. kafka之六:为什么Kafka那么快

    转自:  http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945468&idx=1&sn=b622788361 ...

  9. js搜索相同类型的控件全选、取值(Checkbox)

    function selectAll(obj) { if (obj.checked) { $("input[type='checkbox']").each(function () ...

  10. MFC在对话框中的Picture contrl控件中添加icon图标,并改变icon图标的背景色与对话框背景色一致

    1.在对话框添加Picture Contrl 控件 2.选中控件,修改ID为IDC_STATIC_PICTURE 和 Type属性为icon 其图标改为 3.添加变量m_picture变量名是灰色,说 ...