javascript - 在 Django View 中传递列表或数组(作为参数)

标签 javascript python ajax django

如何在 Django View 中使用传递的值(列表/数组)? 我尝试过这样的事情:

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

在我的 JavaScript 代码中使用 AJAX:

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)

最佳答案

将数据发送到服务器并要求其创建 CSV 似乎是一种浪费,因为您可以在 javascript 本身中轻松完成此操作。服务器负载更少,响应速度更快。

假设您的链接类似于

<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];
        }
    }
}

关于javascript - 在 Django View 中传递列表或数组(作为参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950517/

相关文章:

javascript - 我可以将 Windows.print 从 chrome 设置为 IE 模式吗?

javascript - jquery 事件(提交时)正在影响我的所有 div,而不是单击按钮的唯一 div?

javascript - 为什么通过 html() append HTML 在 IE8 中不起作用?

python - 如何测试python中是否存在多个键?

python - 修改传递给C函数的Python变量

python - 如何使用 FormRequest 发布具有多个同名输入的表单?

javascript - 尝试使用 jQuery 序列化()一组输入字段

javascript - 在 JavaScript 中发送带有正文的 GET 请求 (XMLHttpRequest)

javascript - 以 "For Loop"上传到 Google Cloud Storage(异步)

javascript - 带有 String 的 TypeScript 简单装饰器