分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Django前端页面利用ajax动态显示数据

发布时间:2023-09-06 01:16责任编辑:胡小海关键词:前端

以下代码是某个项目中的一部分,无法直接使用。

1、需要有一个试图返回数据据(数据API)

def dataYear(request): ???""" ??????统计所有数据的界面, 生成年份标签 ???""" ???year = request.GET[‘year‘] ???table_type = request.GET[‘table‘] ???cursor = connections[‘stats‘].cursor() ???provinceSql = "SELECT DISTINCT province FROM YEAR_DATA_QUALITY_VIEW WHERE table_type=‘crawlerapp_results_history‘" ???cursor.execute(provinceSql) ???company_year_records = cursor.fetchall() ???provinces_list = [] ???for company_year_record in company_year_records: ???????provinces_list.append(company_year_record[0]) ???detail_info = {} ???# 创建月份的统计数据视图 ???for province in provinces_list: ???????detail_info[province] = {} ???????yearSql = "SELECT syear, province, records_count FROM YEAR_DATA_QUALITY_VIEW WHERE table_type=‘%s‘ AND province=‘%s‘ AND syear=‘%s‘ ORDER BY syear" % ( ???????????table_type, province, year) ???????cursor.execute(yearSql) ???????company_year_records = cursor.fetchall() ???????if len(company_year_records) > 0: ???????????detail_info[province][‘year‘] = company_year_records[0][0] ???????????detail_info[province][‘province‘] = company_year_records[0][1] ???????????detail_info[province][‘year_total‘] = company_year_records[0][2] ???????else: ???????????context = {‘detail_info‘: {}} ???????????return HttpResponse(json.dumps(context)) ???????monthSql = "SELECT syear, province, month, records_count FROM month_results_view WHERE table_type=‘%s‘ AND province=‘%s‘ AND syear=‘%s‘ ORDER BY month" % ( ???????????table_type, province, year) ???????cursor.execute(monthSql) ???????company_month_records = cursor.fetchall() ???????# detail_info[province][‘‘] = company_month_records[0][0] #年份 ???????# detail_info[province][‘‘] = company_month_records[0][1] #省份 ???????# detail_info[province][‘month_data‘] ={} ???????for init_month in range(1, 13): ???????????detail_info[province][‘month‘ + str(init_month)] = ‘暂无数据‘ ???????for month_data in company_month_records: ???????????# detail_info[province][month_data[2]] = month_data[2] #月份 ???????????detail_info[province][‘month‘ + str(month_data[2])] = month_data[3] ?# 数据量 ???????baseInfoSql = "SELECT syear, company_count, monitor_count, monitor_info_count FROM COMPANY_BASE_INFO_VIEW WHERE province=‘%s‘ AND syear=‘%s‘ ORDER BY syear" % ( ???????????province,year) ???????cursor.execute(baseInfoSql) ???????company_base_infos = cursor.fetchall() ???????# detail_info[province][‘base_info‘] ={} ???????detail_info[province][‘base_year‘] = company_base_infos[0][0] ???????detail_info[province][‘base_company_count‘] = company_base_infos[0][1] ???????detail_info[province][‘base_monitor_count‘] = company_base_infos[0][2] ???????detail_info[province][‘base_monitor_info_count‘] = company_base_infos[0][3] ???context = {‘detail_info‘: detail_info} ???# return render(request, ‘test.html‘, context) ???print ‘data year‘, ‘-‘*50 ???return HttpResponse(json.dumps(context))
View Code

2、需要一个视图对数据进行渲染

def dataOverview(request): ???""" ???统计所有数据的界面, 生成年份标签 ???""" ???cursor = connections[‘stats‘].cursor() ???# 获取视图中的年份 ???yearSql = "SELECT DISTINCT syear FROM YEAR_DATA_QUALITY_VIEW WHERE table_type=‘crawlerapp_results_history‘" ???cursor.execute(yearSql) ???company_year_records = cursor.fetchall() ???year_list = [] ???for company_year_record in company_year_records: ???????year_list.append(company_year_record[0]) ???context = {‘year_list‘: year_list} ???return render(request, ‘overview.html‘, context)
View Code

3、使用ajax

{% extends ‘new_base.html‘ %}{% block grid %}<div class="ui equal width grid" style="margin:5px 0 5px 0;width:70%">{# ?------------------------------------------------ CHART BLOCK --------------------------------------------------- ?#} ???<div class="row"> ?????<div class="column"> ???????<div class="ui container segment"> ???????????<div class="ui compact menu"> ???????????????<select name="year" class="ui dropdown" id="year"> ???????????????????<option value="">年份</option> ???????????????????{% for year in year_list %} ???????????????????????<option class="item py_item" value={{year}}>{{year}}</option> ???????????????????{% endfor %} ???????????????</select> ???????????????<select name="table_type" class="ui dropdown" id="table"> ???????????????????<!--<option value="">Gender</option>--> ???????????????????<option value="crawlerapp_results_history">历史监测数据</option> ???????????????????<option value="crawlerapp_results">实时监测数据</option> ???????????????</select> ???????????</div> ???????????{# ???????????????表格1#} ???????????<div class="table-container"> ???????????????<table class="ui nine column table celled table-result" id="table-result"> ???????????????????<thead> ???????????????????????<tr> ???????????????????????????<th>省份</th> ???????????????????????????<th>监测数据总数</th> ???????????????????????????<th>1月</th> ???????????????????????????<th>2月</th> ???????????????????????????<th>3月</th> ???????????????????????????<th>4月</th> ???????????????????????????<th>5月</th> ???????????????????????????<th>6月</th> ???????????????????????????<th>7月</th> ???????????????????????????<th>8月</th> ???????????????????????????<th>9月</th> ???????????????????????????<th>10月</th> ???????????????????????????<th>11月</th> ???????????????????????????<th>12月</th> ???????????????????????</tr> ???????????????????</thead> ???????????????????<tbody id="tbody-result"> ???????????????????</tbody> ???????????????</table> ???????????</div> ????????????{# ???????????????表格1#} ???????????<div class="table-container"> ???????????????<table class="ui nine column table celled table-result" id="table-result2"> ???????????????????<thead> ???????????????????????<tr> ???????????????????????????<th>省份</th> ???????????????????????????<th>公司数量</th> ???????????????????????????<th>监测点数量</th> ???????????????????????????<th>监测因在数量</th> ???????????????????????</tr> ???????????????????</thead> ???????????????????<tbody id="tbody-result2"> ???????????????????</tbody> ???????????????</table> ???????????</div> ???????</div> ?????</div> ???</div>{# ?------------------------------------------------ CHART BLOCK --------------------------------------------------- ?#}</div>{% endblock %}{% block table %} ????<script>// ???????年份下拉框的改变事件 ???????$(‘#year‘) ?????????.dropdown({// ???????????action: ‘hide‘, ?????????????onChange: function (value, text, $selectedItem) {// ?????????????获取表类型参数 ?????????????????var tableType = $(‘#table‘).dropdown(‘get value‘)[0]; ?????????????????var tableTypeText = $(‘#table‘).dropdown(‘get text‘)[0]; ?????????????????console.log((tableType));// ???????????获取选中年份的字段 ?????????????????var year = value; ?????????????????console.log((year)) ?????????????????var tbody=window.document.getElementById("tbody-result"); ?????????????????var tbody2=window.document.getElementById("tbody-result2"); ?????????????????$.ajax({ ?????????????????????url:"year/?year="+year+"&table=" + tableType, ?????????????????????type:‘GET‘, ?????????????????????success:function (msg) {{# ?????????????????????????反序列化#} ?????????????????????????var data = eval(‘(‘ + msg + ‘)‘); ?????????????????????????console.log(typeof(msg)); ?????????????????????????var table_data = data[‘detail_info‘]; ?????????????????????????console.log(table_data) ?????????????????????????var str1 = ‘‘; ?????????????????????????var str2 = ‘‘; ?????????????????????????if (!table_data){ ?????????????????????????????tbody.innerHTML=‘‘; ?????????????????????????????tbody2.innerHTML=‘‘; ?????????????????????????????return ?????????????????????????} ?????????????????????????for ( k in table_data){ ?????????????????????????????console.log(k) ?????????????????????????????str1 += "<tr>" + ?????????????????????????????????"<td>"+ table_data[k][‘province‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘year_total‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month1‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month2‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month3‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month4‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month5‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month6‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month7‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month8‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month9‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month10‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month11‘] +"</td>" + ?????????????????????????????????"<td>"+ table_data[k][‘month12‘] +"</td>" + ?????????????????????????????"</tr>" ?????????????????????????????str2 += "<tr>"+ ???????????????????????????????????????"<td>"+ table_data[k][‘province‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_company_count‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_monitor_count‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_monitor_info_count‘] +"</td>" + ?????????????????????????????????????"</tr>" ?????????????????????????} ?????????????????????????tbody.innerHTML = str1; ?????????????????????????tbody2.innerHTML = str2; ?????????????????????} ?????????????????}) ?????????????} ?????????}); ???????// ???????实时表或是历史表的改变类型触发 ???????$(‘#table‘) ?????????.dropdown({// ???????????action: ‘hide‘, ?????????????onChange: function (value, text, $selectedItem) {// ???????????????console.log(value, text);// ?????????????????获取表类型参数 ?????????????????var year = $(‘#year‘).dropdown(‘get value‘)[0];// ???????????????如果没有年份被选中,则返回 ?????????????????if (year == "") return; ?????????????????console.log((year));// ???????????????获取选中年份的字段 ?????????????????var tableType = value; ?????????????????var tableTypeText = text; ?????????????????console.log(tableType){# ??????????????????if( !tableType || !year){#}{# ???????????????????????alert("缺少参数,必须要指年份!");#}{# ???????????????????????return;#}{# ???????????????????}#} ?????????????????var tbody=window.document.getElementById("tbody-result"); ?????????????????var tbody2=window.document.getElementById("tbody-result2"); ?????????????????$.ajax({ ?????????????????????url:"year/?year="+year+"&table=" + tableType, ?????????????????????type:‘GET‘, ?????????????????????success:function (msg) {{# ?????????????????????????反序列化#} ?????????????????????????var data = eval(‘(‘ + msg + ‘)‘); ?????????????????????????console.log(typeof(msg)); ?????????????????????????var table_data = data[‘detail_info‘]; ?????????????????????????console.log(table_data) ?????????????????????????var str1 = ‘‘; ?????????????????????????var str2 = ‘‘; ?????????????????????????if (!table_data){ ?????????????????????????????tbody.innerHTML=‘‘; ?????????????????????????????tbody2.innerHTML=‘‘; ?????????????????????????????return ?????????????????????????} ?????????????????????????for ( k in table_data){ ?????????????????????????????console.log(k) ?????????????????????????????str1 += "<tr>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘province‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘year_total‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month1‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month2‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month3‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month4‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month5‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month6‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month7‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month8‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month9‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month10‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month11‘] +"</td>" + ?????????????????????????????????????????"<td>"+ table_data[k][‘month12‘] +"</td>" + ???????????????????????????????????"</tr>" ?????????????????????????????str2 += "<tr>"+ ???????????????????????????????????????"<td>"+ table_data[k][‘province‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_company_count‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_monitor_count‘] +"</td>" + ???????????????????????????????????????"<td>"+ table_data[k][‘base_monitor_info_count‘] +"</td>" + ?????????????????????????????????????"</tr>" ?????????????????????????} ?????????????????????????tbody.innerHTML = str1; ?????????????????????????tbody2.innerHTML = str2; ?????????????????????} ?????????????????}) ?????????????} ?????????}); ????</script>{% endblock %}
View Code

 4、显示效果

选择条件:

动态获取数据,在不重新刷新页面的情况下加载数据表单

Django前端页面利用ajax动态显示数据

原文地址:http://www.cnblogs.com/liangping/p/7645057.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved