Django Highcharts制作圖表
在運(yùn)維工作總很多數(shù)據(jù)最終的展現(xiàn)方式要用到圖表,畢竟用圖來展示要比一堆數(shù)字更直觀些,比如利用率、站點(diǎn)的PV,UV等,大家千萬不要覺得看到很多漂亮的圖就感覺很難,其實(shí)真心不是,因?yàn)楝F(xiàn)在有很多前端的繪圖庫,你只需要按它要求的格式(json)提供給前端接口,什么曲線圖、餅圖,還有你從來都不知道的圖都可以生成出來,現(xiàn)在用的比較多的是highcharts,echarts等,django-highcharts是django的一個(gè)集成庫,使用它在django里更方便繪制出我們想要的圖表,所以這篇文章就使用它來完成一個(gè)超小項(xiàng)目,實(shí)現(xiàn)一個(gè)站點(diǎn)的PV,UV曲線圖, 另外我一直認(rèn)為公眾號其實(shí)不太合適貼太多的代碼,要看代碼最好還是用專業(yè)的編輯器,如果通篇都是代碼,我估計(jì)很多人直接就收藏了,時(shí)間久了自己都忘了,起不到真正學(xué)習(xí)的目的, 所以今天我重點(diǎn)還是講使用步驟,確保下次大家開發(fā)的時(shí)候會用,代碼只是輔助,當(dāng)然核心的我也會全部貼出來,但完整的代碼限于篇幅就不在貼了,另外這篇是需要小伙伴們有django一點(diǎn)點(diǎn)基礎(chǔ)的,如果沒有任何基礎(chǔ),可能需要先了解下基本mvc的概念,否則你可能會看的云里霧里, 其它不多說了,現(xiàn)在開始,我先介紹下開發(fā)環(huán)境:
python 2.7 + django1.8.2 + mysql (版本隨意)
第一步,安裝django-higchats,這個(gè)根據(jù)大家使用的環(huán)境即可,pip或直接用pycharm工具安裝都可以。
第二步,新建project 和app
第三步,以上做完,就可以敲代碼了,先建models,就是數(shù)據(jù)庫表的表結(jié)構(gòu),日常站點(diǎn)訪問數(shù)據(jù)PV,UV數(shù)據(jù)可以插入到這個(gè)表里,一會我們要使用。
第四步,圖表模塊代碼編寫,這部分主要是一個(gè)類從數(shù)據(jù)庫表中獲取數(shù)據(jù),然后將數(shù)據(jù)提供給圖形展示類,代碼如下:
class pudata(object): def __init__(self, dbobj): self.dbobj = dbobj self.pdays = self.dbobj.objects.all() def mpvdate(self): res = {} for v in self.pdays: res[v.days] = v.pvisitor res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0])) return res def muvdate(self): res = {} for v in self.pdays: res[v.days] = v.uvisitor res = collections.OrderedDict(sorted(res.items(), key=lambda d: d[0])) return res class MindgViewPv(HighChartsMultiAxesView): p = pudata(mindg) title = 'mindg.cn' tooltip = {'shared': 'true'} chart_type = 'spline' categories = p.mpvdate().keys() @property def yaxis(self): y_axis = [ { 'title': { 'text': 'PV' }, } ] return y_axis @property def series(self): p = pudata(mindg) series = [ { 'name': 'mindg.cn', 'data': p.icypvdate().values() }] return series
第五步,模板層代碼,模板采用ajax方式,從后臺獲取的json數(shù)據(jù)給highcharts然后繪制曲線圖,代碼如下:
{% extends 'head_css.html' %} {% load highcharts_tags %} {% block js %} <script type="text/javascript"> $(function (){ $.getJSON("{% url 'mpv' %}", function(data) { $('#container').highcharts(data); }); }); </script> {% endblock %}
有了上面的代碼,就可以通過view函數(shù)將mindg.html 渲染出來了,最終圖如下:
關(guān)于highcharts的使用就介紹到這里,如有疑問請我直接留言。
相關(guān)文章
在Python中使用zlib模塊進(jìn)行數(shù)據(jù)壓縮的教程
這篇文章主要介紹了在Python中使用zlib模塊進(jìn)行數(shù)據(jù)壓縮的教程,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06python如何通過實(shí)例方法名字調(diào)用方法
這篇文章主要為大家詳細(xì)介紹了python如何通過實(shí)例方法名字調(diào)用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03python實(shí)現(xiàn)定時(shí)器的5種方法
本文主要介紹了python實(shí)現(xiàn)定時(shí)器的5種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作
這篇文章主要介紹了python nohup 實(shí)現(xiàn)遠(yuǎn)程運(yùn)行不宕機(jī)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置
這篇文章主要介紹了詳解Python中的Numpy、SciPy、MatPlotLib安裝與配置,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Python 類與元類的深度挖掘 I【經(jīng)驗(yàn)】
super() 方法解決了類->實(shí)例實(shí)踐過程中關(guān)于命名空間的一些問題,而關(guān)于生成對象的流程,我們知道初始化實(shí)例是通過類的 __init__() 方法完成的,在此之前可能涉及到一些其它的準(zhǔn)備工作,包括接下來提到的 mro() 方法以及關(guān)鍵的元類->類的過程2016-05-05python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問最近來訪者實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)自動(dòng)登錄人人網(wǎng)并訪問最近來訪者實(shí)例,該實(shí)例是在前面登錄人人網(wǎng)實(shí)例基礎(chǔ)上的擴(kuò)展,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-09-09Python實(shí)現(xiàn)批量獲取當(dāng)前文件夾下的文件名
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)批量獲取當(dāng)前文件夾下的文件名,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02詳解如何使用Python網(wǎng)絡(luò)爬蟲獲取招聘信息
在疫情階段,想找一份不錯(cuò)的工作變得更為困難,很多人會選擇去網(wǎng)上看招聘信息。可是招聘信息有一些是錯(cuò)綜復(fù)雜的。本文將為大家介紹用Python爬蟲獲取招聘信息的方法,需要的可以參考一下2022-03-03