django中怎么利用echart動態(tài)顯示數(shù)據(jù),針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是成都創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。1 思路
- django定時(shí)執(zhí)行任務(wù),將數(shù)據(jù)推送到echart。
- 前端定時(shí)讀取后端數(shù)據(jù),并顯示到echart上。
第一種思路貌似走不通,主要考慮第二種方式。
第二種方式首先想到的是利用javascript直接讀取數(shù)據(jù)庫,并定時(shí)更新echart曲線。
后來了解js只是前端語言,沒有訪問數(shù)據(jù)庫的能力,因此最后轉(zhuǎn)向ajax。
AJAX 大的優(yōu)點(diǎn)是在不重新加載整個(gè)頁面的情況下,可以與服務(wù)器交換數(shù)據(jù)并更新部分網(wǎng)頁內(nèi)容。
這個(gè)正是我需要的功能。
2、任務(wù)分解
- echart動態(tài)曲線顯示如何實(shí)現(xiàn)(官方有例程)
- ajax如何使用(runoob ajax教程)
- django后臺數(shù)據(jù)準(zhǔn)備
3、執(zhí)行
ajax.html
<!DOCTYPE html> <html> <head> {% load static %} <script src="{% static 'myapp/json2.js'%}"></script> <script src="{% static 'myapp/echarts.js'%}"></script> <script src="{% static 'myapp/matplotlib.js'%}"></script> <meta charset="utf-8"> </head> <body> <div id="main" ></div> <div id="myDiv"> <h3>使用 AJAX 修改該文本內(nèi)容</h3></div> <button type="button" οnclick="loadXMLDoc()">修改內(nèi)容</button> <script> var json = {{myContext | safe}} var jstr = JSON.stringify(json) var option = JSON.parse(jstr) // console.log(option) <!-- 為ECharts準(zhǔn)備一個(gè)具備大小(寬高)的Dom --> // 基于準(zhǔn)備好的dom,初始化echarts實(shí)例 var myChart = echarts.init(document.getElementById('main'), 'matplotlib'); // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。 myChart.setOption(option); function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執(zhí)行代碼 xmlhttp = new XMLHttpRequest(); } else { // IE6, IE5 瀏覽器執(zhí)行代碼 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //document.getElementById("myDiv").innerHTML=xmlhttp.responseText; //content = "{{ myContext }}"; //console.log(content) //var json = xmlhttp.responseText; //var jstr = JSON.stringify(json) option = JSON.parse(xmlhttp.responseText) // 使用剛指定的配置項(xiàng)和數(shù)據(jù)顯示圖表。 myChart.setOption(option); //console.log(option); } } xmlhttp.open("GET", "/myapp/mytext", true); xmlhttp.send(); } setInterval(loadXMLDoc, 500); </script> </body> </html>
django后臺程序
def mytext(request): #df = pd.read_csv(r'E:\mywebsite\ui\myapp\xx.csv') import random # dfx = pd.DataFrame() # dfx['a'] = ['2017-08-08','2017-08-09','2017-08-10'] # dfx['b'] = [random.random(),random.random(),random.random()] # dfx['c'] = [random.random(),random.random(),random.random()] # # dfx['a'] = pd.to_datetime(dfx.a) # # dfx = dfx.set_index('a') import sqlite3 conn = sqlite3.connect(r"E:\01_Lab\L02_Ads\practise\ads_sample\multi_freq_data\multi_freq_data\bin\x86\Debug\db_all.db") df = pd.read_sql('select * from buffer',conn) df = df.set_index(pd.to_datetime(df.TimeStamp)) dfn = pd.DataFrame() dfn['ws'] = df.grWindSpeed.astype(float) dfn = dfn.tail(500) option = de.eplot(dfn,1) str_option = json.dumps(option) context = {"myContext": str_option} #return render(request,'myapp/a.html',context) return HttpResponse(str_option) def test_ajax(request): import sqlite3 conn = sqlite3.connect(r"E:\01_Lab\L02_Ads\practise\ads_sample\multi_freq_data\multi_freq_data\bin\x86\Debug\db_all.db") df = pd.read_sql('select * from buffer',conn) df = df.set_index(pd.to_datetime(df.TimeStamp)) dfn = pd.DataFrame() dfn['ws'] = df.grWindSpeed.astype(float) dfn = dfn.tail(500) option = de.eplot(dfn,1) str_option = json.dumps(option) context = {"myContext": str_option} #context = {"myContext": {'a':[1,2],'b':[3,4]}} return render(request, 'myapp/ajax.html', context)
關(guān)于django中怎么利用echart動態(tài)顯示數(shù)據(jù)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。
標(biāo)題名稱:django中怎么利用echart動態(tài)顯示數(shù)據(jù)-創(chuàng)新互聯(lián)
文章鏈接:http://jinyejixie.com/article34/djejpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、云服務(wù)器、面包屑導(dǎo)航、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容