我有一个看起来像这样的 View.py 函数:
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 时出现以下错误:
City ACMAR 不是 JSON 可序列化的
所以我尝试了这个:
def GetAllCities(request):
cities = serializers.serialize("json", City.objects.all())
return HttpResponse(cities)
这可行,但速度很慢,大约需要 9 秒(我的数据库包含 30000 行)应该花这么长时间还是我做错了什么?我用 PHP、Rails 和 NodeJS 构建了相同的应用程序。在 PHP 中平均需要 2000 毫秒,NodeJS = 800 毫秒,Rails = 5882 毫秒和 Django 9395 毫秒。我试图在这里进行基准测试,所以我想知道是否有办法优化我的 Django 代码,或者这是否尽可能快?