Django 的簡單ajax

需要通過ajax實現局部刷新

js代碼

$('#guo-sou-ajax').click(function(){   #獲取id為guo-sou-ajax點擊后的信號console.log($(this).attr("data-action")) $.ajax({            #調用ajaxurl: $(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_sif Devicenumber != '' and subclass_s != '':try:subclass_s = subclass_s.filter(Devicenumber=Devicenumber)except:subclass_s = subclass_sif starttime != '' and subclass_s != '':try:subclass_s = subclass_s.filter()except:subclass_s = subclass_sif State != '' and subclass_s != '':try:subclass_s = subclass_s.filter(State=State)except:subclass_s = subclass_slist = []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

轉載于:https://www.cnblogs.com/dayouzi/p/10183549.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387693.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387693.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387693.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

postman提取返回值

Postman是做接口測試的&#xff0c;但是很多接口并不是直接就能測&#xff0c;有的需要一些預處理。比如說身份認證&#xff0c;需要傳遞一個token。如果做網頁測試&#xff0c;一般打開登陸界面的時候就會生成一個token&#xff0c;如果返回值是json格式&#xff0c;用Postman…

docker下用keepalived+Haproxy實現高可用負載均衡集群

啟動keepalived后宿主機無法ping通用keepalived&#xff0c;報錯&#xff1a; [rootlocalhost ~]# ping 172.18.0.15 PING 172.18.0.15 (172.18.0.15) 56(84) bytes of data. From 172.18.0.1 icmp_seq1 Destination Host Unreachable From 172.18.0.1 icmp_seq2 Destination H…

hadoop hive 2.1.1 將Hive啟動為服務

我們之前使用的Shell方式與Hive交互只是Hive交互方式中的一種&#xff0c;還有一種就是將Hive啟動為服務&#xff0c;然后運行在一個節點上&#xff0c;那么剩下的節點就可以使用客戶端來連接它&#xff0c;從而也可以使用Hive的數據分析服務。 前臺模式 可以使用下面的命令來將…

大數據學習要知道的十大發展趨勢,以及學習大數據的幾點建議

2016年&#xff0c;近40%的公司正在實施和擴展大數據技術應用&#xff0c;另有30%的公司計劃在未來12個月內采用大數據技術&#xff0c;62.5%的公司現在至少有一個大數據項目投入生產&#xff0c;只有5.4%的公司沒有大數據應用計劃&#xff0c;或者是沒有正在進行的大數據項目&…

pickle 模塊

import pickle # class Elephant:def __init__(self, name, weight, height):self.name nameself.weight weightself.height heightdef tiaoxi(self):print(f"{self.name}大象特別喜歡調戲人")# e Elephant("寶寶", "185T", "175"…

Hiv:SQuirrel連接hive配置

熟悉了Sqlserver的sqlserver management studio、Oracle的PL/SQL可視化數據庫查詢分析工具&#xff0c;在剛開始使用hive、phoenix等類sql組件時&#xff0c;一直在苦苦搜尋是否也有類似的工具&#xff0c;不負所望&#xff0c;SQuirrel Sql client 可視化數據庫工具基本可滿足…

MariaDB 數據庫索引詳解(9)

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可MariaDB的目的是完全兼容MySQL,包括API和命令行,MySQL由于現在閉源了,而能輕松成為MySQL的代替品.在存儲引擎方面,使用XtraDB來代替MySQL的InnoDB,MariaDB由MySQL的創始人Michael Widenius主導開發…

Kettle連接Hive2的問題解決思路

在kettle上當選擇好HIVE2連接時候有報錯 org.pentaho.di.core.exception.KettleDatabaseException: Error occured while trying to connect to the databaseError connecting to database: (using class org.apache.hive.jdbc.HiveDriver)org/apache/http/client/CookieStore…

windows下cmd常用的命令

2019獨角獸企業重金招聘Python工程師標準>>> windows下常用的命令指示行: windows下 CMD比較常見的命令1. gpedit.msc-----組策略 2. sndrec32-------錄音機 3. Nslookup-------IP地址偵測器 4. explorer-------打開資源管理器 5. logoff---------注銷命令 6. …

Hive的內置數據類型

Hive的內置數據類型可以分為兩大類&#xff1a;(1)、基礎數據類型&#xff1b;(2)、復雜數據類型。其中&#xff0c;基礎數據類型包括&#xff1a;TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY,TIMESTAMP,DECIMAL,CHAR,VARCHAR,DATE。下面的表格列出這些基…

ubuntu18.04安裝chrome和優化界面

一分鐘安裝教程chrome教程&#xff01; 1、將下載源加入到系統的源列表&#xff08;添加依賴&#xff09; sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/ 2、導入谷歌軟件的公鑰&#xff0c;用于對下載軟件進行驗證。 wget -q -O - …

Java學習進階—高級編程

當你已經熟練的掌握了面向對象中的各種概念后&#xff0c;是否會對這些知識是如何使用的產生濃厚的興趣&#xff1f;本課程主要針對于已經掌握了JAVA核心開發技術的讀者準備&#xff0c;講解了JAVA多線程、常用類庫、IO編程、網絡編程、類集框架、JDBC等與Java實際應用有關的開…

Hive的幾種常見的數據導入方式

這里介紹四種&#xff1a;&#xff08;1&#xff09;、從本地文件系統中導入數據到Hive表&#xff1b;&#xff08;2&#xff09;、從HDFS上導入數據到Hive表&#xff1b;&#xff08;3&#xff09;、從別的表中查詢出相應的數據并導入到Hive表中&#xff1b;&#xff08;4&…

手把手教你開發基于深度學習的人臉識別【考勤/簽到】系統

人臉識別介紹平臺環境需求技術點系統流程細節設計 人臉檢測人臉關鍵點定位人臉特征提取 模型的訓練模型的部署 MySQL數據庫的使用MFC工程的搭建 軟件使用 人臉識別介紹 人臉識別技術是一項非接觸式、用戶友好、非配合型的計算機視覺識別技術。隨著機器學習、深度學習等技術的發…

重學前端學習筆記(二十二)--選擇器的機制

筆記說明 重學前端是程劭非&#xff08;winter&#xff09;【前手機淘寶前端負責人】在極客時間開的一個專欄&#xff0c;每天10分鐘&#xff0c;重構你的前端知識體系&#xff0c;筆者主要整理學習過程的一些要點筆記以及感悟&#xff0c;完整的可以加入winter的專欄學習【原文…

Windows+VS2013爆詳細Caffe編譯安裝教程

1. 安裝cuda Cuda是英偉達推出的GPU加速運算平臺 我這里安裝的是cuda7.5,已經安裝過的忽略,還沒有安裝過的這里有安裝教程.windows下面安裝還是非常簡單的. 點擊打開鏈接 &#xff08;我的顯卡是1080 現在支持cuda8.0 所以我下的是8.0&#xff09; 2. 下載cuDNN(其實是個壓縮…

CF 526F Max Mex(倍增求LCA+線段樹路徑合并)

Max Mex 題目地址&#xff1a;https://codeforces.com/contest/1084/problem/F然后合并時注意分情況討論&#xff1a; 參考代碼&#xff1a;1 #include<bits/stdc.h>2 using namespace std;3 #define pb push_back4 #define mkp make_pair5 #define fi first6 #define se…

大學剛畢業,零基礎大數據如何入門?

這篇文章中&#xff0c;本文作者將針對三種不同的、想要進入數據科學領域的人群&#xff0c;給出自己的經驗&#xff0c;幫助他們迅速有效入行。無論是軟件工程師、應屆畢業生&#xff0c;還是完全初學者&#xff0c;都要問自己一個關鍵問題&#xff1a;什么樣的職業軌跡最接近…

Opencv EmguCv 基本識別步驟

{//1.灰度化&#xff0c;豎向邊緣檢測//2.自適應二值化處理//3.形態學處理&#xff08;膨脹和腐蝕&#xff09;//4.輪廓查找與篩選Image<Bgr, byte> simage OriImage; //new Image<Bgr, byte>("license-plate.jpg");//Image<Bgr, Byte> simage…

(轉)Java中的守護線程

Java的守護線程與非守護線程 守護線程與非守護線程 最近在看多線程的Timer章節&#xff0c;發現運用到了守護線程&#xff0c;感覺Java的基礎知識還是需要補充。 Java分為兩種線程&#xff1a;用戶線程和守護線程 所謂守護線程是指在程序運行的時候在后臺提供一種通用服務的線程…