没有型号的Tastypie Adder

时间:2012-09-20 16:04:37

标签: django tastypie

我想制作一个基于Tastypie的API加法器。以下是它的工作原理...用户会发布他们想要添加的两个数字并使用Tastypie + Django我想在返回给用户时添加添加的数字。

我没兴趣将它放入mySQL数据库。

class Adder(resource):
    class Meta:
    authorization = Authorization()
    authentication = Authentication()

    def hydrate(self,bundle):
        _a = bundle.data['first_number']
        _b = bundle.data['second_number']

        self.create_response(request, return_dict)
        return bundle

Tastypie的文档似乎真的围绕模型(出于显而易见的原因)。

但我很好奇是否可以在水合物方法中调用create_response,并且调用水合物方法是处理后期数据的正确方法。

1 个答案:

答案 0 :(得分:2)

我可能会跳过像hydrate,apply_sorting,build_filters等更细粒度的东西。

我假设没有api背后的对象你正在使用像/api/v1/add_stuff/这样的列表式网址,并假设你正在接受POST请求。如果这些假设是错误的,您可以通过更改为post_detail,get_list等进行调整。

def post_list(self, request, **kwargs):
    _a = request.POST.get('first_number', None)
    _b = request.POST.get('second_number', None)
    if None in (_a, _b):
        raise HttpBadRequest()
    return self.create_response(request, {'result': _a + _b})

请注意,我认为这段代码可行,但我还没有测试过。这是为了提供一个起点。

This section of the Tastypie docs描述了调用各种方法的顺序,并且在页面底部有一个完整的API引用,因此您可以看到事物期望的参数以及它们应该返回的内容。

编辑:

这种情况的流程看起来像这样:

  1. dispatch中,检查请求uri。取决于是否 请求详细信息或列表uri(/api/v1/add_stuff/<pk>//api/v1/add_stuff/),处理委托给dispatch_detail或。{ dispatch_list。这也是身份验证,授权, 和限制检查发生。

  2. dispatch_list中,检查请求方法并调用 委托给名为'%s_list' % request.METHOD.lower()的方法。 要回答您的评论,这些是神奇的方法名称。如果 请求方法是POST,dispatch_list查找名为的方法 post_list如果适当的处理程序,则抛出错误 未定义。