Javascript 在Django视图中传递列表或数组(作为参数)
如何在Django视图中使用传递值列表/数组? 我试过这样的方法:Javascript 在Django视图中传递列表或数组(作为参数),javascript,python,ajax,django,Javascript,Python,Ajax,Django,如何在Django视图中使用传递值列表/数组? 我试过这样的方法: def to_csv(request): g_data = request.GET.getlist('json_data') g_header = request.GET.get('header') g_info = request.GET.get('info') response = HttpResponse(content_type='text/csv') response['Cont
def to_csv(request):
g_data = request.GET.getlist('json_data')
g_header = request.GET.get('header')
g_info = request.GET.get('info')
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
list_header = [[g_info, '', '', '', '', '', '', ''],
['Municipality', 'Barangay', 'Total Number of Structures', 'Total Not Affected', 'Total Affected',
'Low', 'Medium', 'High', 'Total Affected %']]
disclaimer = [
'Disclaimer: The information....',
'', '', '', '', '', '']
for val in g_data:
perc = (val[4] / float(val[2])) * 100
st_perc = str(round(perc, 2))
val.append(st_perc)
list_header.append(val)
list_header.append(disclaimer)
writer = csv.writer(response)
writer.writerows(list_header)
return response
在我使用AJAX的JavaScript代码中:
function to_csv(json_data, header, info){
$.ajax({
url: "/to_csv/",
headers: {
Accept : "text/csv; charset=utf-8",
"Content-Type": "text/csv; charset=utf-8"
},
type: "GET",
data: {
'json_data': json_data,
'header': header,
'info':info
},
问题是,它无法获取传递的数据g_data通过使用json.loads解决此问题:
g_data = json.loads(request.GET.get('json_data'))
将数据发送到服务器并要求它创建CSV,这似乎是一种浪费,因为您可以在javascript中轻松地创建CSV。服务器上的负载越小,响应越快 假设你的链接是
<a href="" id="download_link">Download CSV</a>
function to_csv(json_data, header, info){
var s = "data:text/csv,"
for (var key in json_data) {
if (json_data.hasOwnProperty(key)) {
s += json_data[key];
}
}
}