2012-09-20 16 views
1

我想做一個基於Tastypie的API加法器。這是它是如何工作的...用戶會發布到他們想要添加的兩個數字,並使用Tastypie + Django我想在返回給用戶時包含添加的數字。沒有模型的Tastypie加法器

我沒有興趣把它放入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,並且調用水合物方法是處理後期數據的正確方法。

回答

2

我可能會跳過細粒度之類的東西水合物,apply_sorting,build_filters等

我假設,如果沒有您使用的是列表的前瞻性網址像/api/v1/add_stuff/,並假設API後面的物體你正在接受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_detaildispatch_list。這也是認證,授權, 和限制檢查發生的地方。

  2. dispatch_list中,檢查請求方法並將呼叫委託給名爲'%s_list' % request.METHOD.lower()的方法 。 要回答您的評論,這些是神奇的方法名稱。如果 請求方法是POST,dispatch_list查找一個名爲 post_list方法,如果相應的處理程序 沒有定義的錯誤被拋出。

+0

這看起來不錯,我的問題是如何調用def post_list。這是否被每次由tastypie自動發佈帖子調用?更好的是,所有這些資源方法如何被調用?他們只是自動檢測? –

+0

更新了我的答案。這些細節在文檔中顯得很清晰。我只需要查看源代碼就可以瞭解它。 – dokkaebi

+0

十分感謝......啊的文檔沒有進入到很多細節 –

相關問題