基本上,我试图将原始SQL查询结果转换为JSON对象,然后通过AJAX将其发送到客户端。 这是我的观点(我使用 Django 1.8.6 )
import MySQLdb
from django.db import connection
import json
from django.http import HttpResponse
from django.core import serializers
def test_view(request):
cursor = connection.cursor()
cursor.execute("select id, name from okved")
data = cursor.fetchall
json_data = serializers.serialize('json', data)
return HttpResponse(json_data, content_type="application/json")
各自的URLConf
url(r'^test/$', test_view),
JQuery函数
var test = function()
{
$.ajax({
type:"GET",
url:"/test",
dataType : 'json',
cache: "false",
data:{},
success:function(response)
{
alert("Test successful");
}
});
return true;
}
我经常遇到 GET http://127.0.0.1:8000/test/ 500(内部服务器错误)错误,因为我遵循了我之前遇到的所有建议。我真的很感激任何帮助。我试着在这上面冲浪Stackoverflow。
答案 0 :(得分:3)
首先,500错误只是一个错误代码,django会给你堆栈跟踪函数堆栈中发生错误的位置,你应该学会读取它并找到错误发生的位置。
从您的代码中听起来好像您正在尝试使用serializers
来序列化原始查询结果。这不起作用,因为原始结果是元组的元组,每个子元组是从数据库返回的记录。 Django serializers
只擅长序列化从ORM查询的对象。您最好使用json.dumps()
方法。这是你的views.py中的最后几行:
data = cursor.fetchall()
json_data = json.dumps(data)
return HttpResponse(json_data, content_type="application/json")
这里是django序列化程序的doc。