django返回頁面和json格式列表給前端AntV圖表使用。
ret_char_data = [] # 經費支出分類彙總列表 ret_char_data_root = [] # 經費支出分類彙總列表含總經費 budget_obj = models.Budget.objects.filter(id=request.GET.get("id")).first() payment_year = time.strptime(budget_obj.year_budget, "%Y")[0] payment_previous_year = time.strptime(budget_obj.year_budget, "%Y")[0] - 1 sum_pay = models.Payment.objects.filter(payment_time__year=payment_year).values().aggregate(Sum("payment_amount")) # 年度總支出 payment_list = models.Payment.objects.filter(payment_time__year=payment_year).values( "payment_project__project_property").annotate(Sum("payment_amount")) # 按專案屬性得到支出彙總資料 payment_list_previous_year = models.Payment.objects.filter(payment_time__year=payment_previous_year).values( "payment_project__project_property").annotate(Sum("payment_amount")) property_tuple = models.OperaMaintProject._meta.model.property_choices # 得到 ((0, '自主維護'), (1, '專業代維'), (2, '外包維修'), (3, '緊急搶修'), (4, '備件採購'), (5, '其他')) ret_list = [] ret_list_previous_year = [] budget = budget_obj.reply_quota*10000 - sum_pay["payment_amount__sum"] # 剩餘經費 budget_dic = {"budget": budget} for property in property_tuple: char_dic = {} char_dic_root = {} char_dic['type'] = property[1] char_dic_root['type'] = property[1] char_dic['money'] = 0 char_dic_root['money'] = 0 for pay_item in payment_list: if pay_item["payment_project__project_property"] == property[0]: char_dic['type'] = property[1] char_dic_root['type'] = property[1] char_dic['money'] = pay_item['payment_amount__sum'] char_dic_root['money'] =float(round((pay_item['payment_amount__sum']/(budget_obj.reply_quota*10000))*100,1)) ret_char_data.append(char_dic) ret_char_data_root.append(char_dic_root) sum_money = 0 for obj in ret_char_data_root: sum_money =sum_money +float(obj["money"]) char_dic_remainder = {} char_dic_remainder['type'] = '剩餘經費' char_dic_remainder['money'] = 100-sum_money ret_char_data_root.append(char_dic_remainder) ret_char_data_root = json.dumps(ret_char_data_root) # char_dic_total = {} # char_dic_total['type'] = '總經費' # char_dic_total['money'] = str(budget_obj.reply_quota*10000) # ret_char_data_root.append(char_dic_total) print(ret_char_data_root) char_dic_sum={} char_dic_sum['type'] = '總支出' char_dic_sum['money'] = str(sum_pay['payment_amount__sum']) ret_char_data.append(char_dic_sum) return render(request, "opera_maint/budget_mgr/budget_analysis.html", {"ret_list": ret_list, "ret_list_previous_year": ret_list_previous_year, "property_tuple": property_tuple, "ret_char_data": ret_char_data, "ret_char_data_root": ret_char_data_root, })
前端:
var _DataSet = DataSet, DataView = _DataSet.DataView; 前端獲取列表 var temp_data = '{{ ret_char_data_root|safe }}'; console.log(data,typeof(data)); 這時temp_data 是個字串 var data =JSON.parse(temp_data); 轉成json物件 console.log(data,typeof(data)); 此時已經是object了。不能直接使用 JSON.parse('{{ ret_char_data_root|safe }}')。要中轉一下。 var dv1 = new DataView(); dv1.source(data).transform({ type: 'percent', field: 'money', dimension: 'type', as: 'percent' }); var chart1 = new G2.Chart({ container: 'mountNode1', forceFit: true, height: window.innerHeight }); chart1.source(dv1, { percent: { formatter: function formatter(val) { val = val * 100 + '%'; return val; } } }); chart1.coord('theta'); chart1.tooltip({ showTitle: false, itemTpl: '<li><span class="g2-tooltip-marker"></span>{name}: {value}</li>' }); chart1.intervalStack().position('percent').color('type').label('percent', { offset: -40, // autoRotate: false, textStyle: { rotate: 0, textAlign: 'center', shadowBlur: 2, shadowColor: 'rgba(0, 0, 0, .45)' } }).tooltip('type*percent', function (item, percent) { percent = percent * 100 + '%'; return { name: item, value: percent }; }).style({ lineWidth: 1, stroke: '#fff' }); chart1.render(); </script>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2817714/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Gin 框架 JSON 格式返回結果的使用方式框架JSON
- go fiber: controller返回json格式GoControllerJSON
- Django實現圖片上傳並前端頁面顯示Django前端
- JSON 格式化 顯示到頁面中JSON
- 格式化 curl 返回的 jsonJSON
- 如何優雅的使用springboot返回下劃線格式JsonSpring BootJSON
- 給你的頁面帶上側滑返回——SlideBackIDE
- 前端 | Vue 路由返回恢復頁面狀態前端Vue路由
- 使用Jquery和JSON的州和城市列表jQueryJSON
- Laravel 8 表單驗證丟擲異常返回 json 格式資料LaravelJSON
- 從列表頁跳轉到詳情頁,返回列表頁時列表頁與之前的狀態相同
- 在Struts2中寫介面,返回json格式JSON
- Laravel 靈活使用 中介軟體, 自定義全域性 API JSON 返回格式LaravelAPIJSON
- 關於重寫 Laravel 表單驗證器 Request 返回 JSON 的資料格式LaravelJSON
- Go抓取網頁資料並存入MySQL和返回json資料Go網頁MySqlJSON
- Django實踐(二)——使用模型類定義資料表,實現表單頁面跳轉Django模型
- vue返回上一頁面如果沒有上一頁面返回首頁Vue
- @ControllerAdvice 全域性異常響應頁面和 JSONControllerJSON
- IIS設定404頁面返回200碼和404頁面亂碼解決方法
- React使用ProComponent建立表單和列表React
- Django 前端BootCSS 實現分頁Django前端bootCSS
- SpringCloudSpringBootmybatis分散式微服務雲架構(十二)返回JSON格式GCCloudSpring BootMyBatis分散式微服務架構JSON
- 蝦皮商品詳情介面返回資料的json格式JSON
- js進入詳情頁再返回到上一個列表頁面時怎麼能讓原來頁面資料不變JS
- 使用javaURL從介面頁面中獲得返回值Java
- 小程式頁面返回重新整理資料onLoad和onShow頁面傳參解決
- 返回給前端樣式資料整合Swagger前端Swagger
- 自定義攔截器,攔截到了某個請求就返回給前端一個JSON串前端JSON
- 前端頁面效能前端
- web api 返回Json資料中人格式帶T處理WebAPIJSON
- 使用.format格式化json格式的入參ORMJSON
- python使用flask框架生成excle返回前端(包含圖片、表格、表頭灰色、表格加邊框)PythonFlask框架前端
- nodejs伺服器讀取圖片返回給前端(瀏覽器)顯示NodeJS伺服器前端瀏覽器
- 使用httpclient下載 頁面、圖片HTTPclient
- 前端:你要懂的單頁面應用和多頁面應用前端
- Django框架簡單搭建增刪改查頁面 Django請求生命週期流程圖Django框架流程圖
- 給定json資料,將資料與頁面結構進行繫結JSON
- PbootCMS內容和列表頁呼叫tags列表boot