Django:将查询结果作为api返回

时间:2014-05-01 21:07:40

标签: django rest tastypie django-rest-framework

我正在尝试使用Django构建API服务器。我有几个表,我需要根据url传递的参数运行查询:

http://server.com/api/request/p1=123&p2=321...

,服务器将从url中提取p1p2并使用它们运行查询,然后以json或xml返回结果。

我尝试过Tastypie,设置从一个模型中检索数据非常容易。但我的情况有点复杂,有时我需要运行空间查询。因此,如果我可以运行查询并将结果作为json / xml返回,那就太棒了!

后端技术的新功能,对起点的任何帮助都表示赞赏!

谢谢!

[编辑] 只是想让我的案子更清楚。假设我使用qs = cursor.execute(sql)等运行原始查询,我想将结果作为json / xml返回到api调用。我可以使用Tastypie或Rest Framework吗?或者,如果没有第三方框架的任何帮助,我可以这样做吗?

2 个答案:

答案 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了解详情。