我试图通过使用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。是否可以将其作为数组接收,并访问各个值?
答案 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')