我正在尝试使用Django构建API服务器。我有几个表,我需要根据url传递的参数运行查询:
http://server.com/api/request/p1=123&p2=321...
,服务器将从url中提取p1
和p2
并使用它们运行查询,然后以json或xml返回结果。
我尝试过Tastypie,设置从一个模型中检索数据非常容易。但我的情况有点复杂,有时我需要运行空间查询。因此,如果我可以运行查询并将结果作为json / xml返回,那就太棒了!
后端技术的新功能,对起点的任何帮助都表示赞赏!
谢谢!
[编辑]
只是想让我的案子更清楚。假设我使用qs = cursor.execute(sql)
等运行原始查询,我想将结果作为json / xml返回到api调用。我可以使用Tastypie或Rest Framework吗?或者,如果没有第三方框架的任何帮助,我可以这样做吗?
答案 0 :(得分:1)
这是一个我使用return json的视图,你应该能够很容易地调整它:
import json
from django.http import HttpResponse
from django.template.defaultfilters import slugify
from .models import *
def response_times(request):
response_data = {} #Create an empty dictionary
websites = Website.objects.all() #Query your models
for site in websites:
key = slugify(site.name)
response_data[key] = {}
history = History.objects.filter(website=site)[:60]
response_data[key]['response_times'] = []
for response in history:
response_data[key]['response_times'].append({'time': str(response.time), 'timestamp': response.added.strftime('%s')})
return HttpResponse(json.dumps(response_data), content_type="application/json")
答案 1 :(得分:0)
似乎你在一些Model实例的结果QuerySet中有。因此,您可以指定序列化程序来处理模型,并使用它来使用Rest Framework从模型实例序列化为本机python数据。查看here了解详情。