2012-09-20 3 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의 설명서는 실제로 모델을 중심으로 움직이는 것처럼 보입니다 (명백한 이유로).

그러나 hydrate 메서드 내에서 create_response를 호출 할 수 있는지 궁금했고 수화물 메서드를 호출하는 것이 게시물 데이터를 처리하는 올바른 방법인지 궁금했습니다.

아마 등 수화물, apply_sorting, build_filters, 내가 믿고있어

을 같이 세분화 된 일을 건너 뛸 것

답변

2

당신이 /api/v1/add_stuff/ 같은 목록이 보이는 URL을 사용하고 가정하고있는 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 참조가 있으므로 어떤 매개 변수가 예상하고 어떤 것이 반환되어야하는지 볼 수 있습니다.

편집 :이 같은

이 상황의 흐름을 보면 무언가 : dispatch에서

  1. 는 요청 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_listpost_list이라는 메서드를 찾고 적절한 처리기 이 정의되어 있지 않으면 오류가 발생합니다.

+0

이것은 좋은 것처럼 보입니다. 제 질문은 def post_list가 어떻게 호출되는지입니다. tastypie에 의해 자동으로 게시물이있을 때마다 호출됩니까? 더 나은 방법은 모든 리소스 메소드를 호출하는 방법입니다. 그들은 자동으로 감지 되었습니까? –

+0

내 대답이 업데이트되었습니다. 이 세부 사항은 문서에서 유약의 종류입니다. 나는 그것을 알아 내기 위해 출처를보아야 만했다. – dokkaebi

+0

대단히 감사합니다 ... 음침한 의사는 세부 정보로 들어 가지 않았습니다. –

관련 문제