urls:
from django.conf.urls import url, include from . import views urlpatterns = [ ... url(r'^domains/_export_dns.html', views.export_dns, name='export_dns'), ... ]
view:
import xlrd, xlwt def set_style(name, height, bold=False): """ excel样式 :param name: 字体名 :param height: 调度 :param bold: 边框 :return: """ style = xlwt.XFStyle() # 初始化样式 font = xlwt.Font() # 为样式创建字体 font.name = name # 'Times New Roman' font.bold = bold font.color_index = 000 font.height = height style.font = font # 设置单元格边框 # borders= xlwt.Borders() # borders.left= 6 # borders.right= 6 # borders.top= 6 # borders.bottom= 6 # style.borders = borders # 设置单元格背景颜色 # pattern = xlwt.Pattern() # 设置其模式为实型 # pattern.pattern = pattern.SOLID_PATTERN # 设置单元格背景颜色 # pattern.pattern_fore_colour = 0x00 # style.pattern = pattern return style @login_required def export_dns(req): """ 导出DNS解析记录 :param req: :return: """ if req.method == 'GET': data = req.GET.get('data') data = json.loads(data) zone_tag_obj = models.ZoneTag.objects.get(zone_name=data['zone']) record_obj_list = zone_tag_obj.ZoneTag_Record.filter( ~Q(type='SOA') ) response = HttpResponse(content_type='application/ms-excel') response['Content-Disposition'] = 'attachment; filename="%s.xls"' %(data['zone']) book = xlwt.Workbook(encoding='utf-8') sheet = book.add_sheet('Sheet1', cell_overwrite_ok=True) row0 = ['主机记录', '记录类型', '解析线路', '记录值', 'MX优先级', 'TTL', '状态', '备注'] # 设置列宽 sheet.col(0).width = 6000 sheet.col(1).width = 3000 sheet.col(2).width = 3000 sheet.col(3).width = 6000 sheet.col(4).width = 3000 sheet.col(5).width = 3000 sheet.col(6).width = 3000 sheet.col(7).width = 12000 for i in range(0, len(row0)): sheet.write_merge(0, 0, i, i, row0[i], set_style('Times New Roman', 220, True)) for k, v in enumerate(record_obj_list, start=1): sheet.write(k, 0, v.host) sheet.write(k, 1, v.type ) sheet.write(k, 2, v.resolution_line ) sheet.write(k, 3, v.data ) sheet.write(k, 4, v.mx_priority ) sheet.write(k, 5, v.ttl) sheet.write(k, 6, v.status) sheet.write(k, 7, v.comment ) book.save(response) return response elif req.method == 'POST': msg = {'status': 200} return HttpResponse(json.dumps(msg))
js:
function ExportDnsRecordACK(){ // 确认导出DNS解析记录 var _export_dns_record_type = $("select[name=export_dns_record_type]")[0].value.trim(); var _zone = $("#ExportDnsRecordModalLabel h4").attr('domain') var __data = {'data': _export_dns_record_type, 'zone':_zone} var url = "/domains/_export_dns.html?data=" + JSON.stringify(__data); $.ajax({ url: "/domains/_export_dns.html", type: "POST", //请求类型 data: {}, //async : false, dataType: "json", //beforeSend:function(XMLHttpRequest){ // // 请求前执行 //}, success: function (response, status, request) { //当向服务端发起的请求执行成功完成后,自动调用 if(request['status'] == 200){ $('#ExportDnsRecordModalLabel').modal('hide'); window.location.href = url; //下载文件 } }, error: function () { //当请求错误之后,自动调用 } }); } $(document).ready(function(){ // 确认 导出DNS解析记录 $(document).on("click", 'button[name=_export_dns_record_ok]', ExportDnsRecordACK); }