通过AJAX将Python数组发送到django模板

时间:2015-08-03 17:44:51

标签: python arrays ajax django

我试图通过使用AJAX将随机Python数组发送到Django中的模板:

JS:

    $("button").click(function() {
        $.ajax({
            url: "/hello",
            type: "get",
            success: function(data) { 
                printData(data);                    
            },
            error: function(data) { 
                alert("Error!");
            }
        });
    })

Django观点:

from django.http import HttpResponse
from django.views.generic import View
from django.shortcuts import render, render_to_response

import numpy as np

def hello(request):
    rand_arr = np.random.randint(100, size=10)
    return HttpResponse(rand_arr)

我收到的数组如下:3133352430290167691。是否可以将其作为数组接收,并访问各个值?

3 个答案:

答案 0 :(得分:0)

另一种可能的方法是同时使用Dajax和Dajaxice。这是通过AJAX创建动态页面的更“pythonic”方式。

答案 1 :(得分:0)

您需要在HTTP响应中返回json。此外,使用numpy创建数组是不可能的。这可以通过random轻松完成。

from django.http import HttpResponse
from django.views.generic import View
from django.shortcuts import render, render_to_response

import random
import json

def hello(request):
    rand_arr = [random.randint(0, 100) for x in range(10)]
    return HttpResponse(json.dumps(rand_arr), content_type="application/json")

答案 2 :(得分:-1)

如果你需要Numpy(并且变量rand_arr是一个例子)那么使用json.dumps(rand_array)失败的原因是因为Numpy返回它自己的数组类型numpy.ndarray

然后,使用Numpy处理此问题的方法是将数组转换为列表。

from django.http import HttpResponse
from django.views.generic import View
from django.shortcuts import render, render_to_response

import json
import numpy as np

def hello(request):
    rand_arr = np.random.randint(100, size=10)
    return HttpResponse(json.dumps(list(rand_arr)), content_type='application/json')