我得到了一个View.py功能,看起来像这样:Django的 - 返回JSON,错误
def GetAllCities(request):
cities = list(City.objects.all())
return HttpResponse(json.dumps(cities))
我的城市模型看起来像这样
class City(models.Model):
city = models.CharField()
loc = models.CharField()
population = models.IntegerField()
state = models.CharField()
_id = models.CharField()
class MongoMeta:
db_table = "cities"
def __unicode__(self):
return self.city
我使用MongoDB的,看起来像这样
{
"_id" : ObjectId("5179837cbd7fe491c1f23227"),
"city" : "ACMAR",
"loc" : "[-86.51557, 33.584132]",
"state" : "AL",
"population" : 6055
}
我想从我的GetAllCities函数返回的JSON时收到以下错误:
市ACMAR不是JSON序列化
所以,我想这个代替:
def GetAllCities(request):
cities = serializers.serialize("json", City.objects.all())
return HttpResponse(cities)
而这个工作,但它是非常缓慢的,它需要大约9秒(我的数据库包含了30000行) 应该它需要这么长时间还是我做错了什么? 我已经在PHP,Rails和NodeJS中构建了相同的应用程序。 在PHP中,平均需要2000ms,NodeJS = 800ms,Rails = 5882ms和Django 9395ms。我试图在这里进行基准测试,所以我不知道是否有一种方法来优化我的Django代码,或者它是如此快速?
这确实是一个很好的答案,但我标杆,请参阅我的回答:) – JOSEFtw 2013-04-26 12:25:35
即使您缩短了处理时间,但实际上并没有解决了这个问题。如果你有两倍多的城市,时间会增加两倍。 – 2013-04-26 13:47:15