2012-09-20 2 views
1

Я хотел бы сделать сумматор API на основе Tastypie. Вот как это работает ... пользователь будет отправлять сообщения на два числа, которые они хотели бы добавить, и используя Tastypie + Django, я хотел бы добавить добавленный номер в обратном для пользователя.Tastypie Adder без моделей

Я не заинтересован в том, чтобы поместить его в базу данных 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 и т.д.

Я предполагаю, что без объектов за АНИ вы используете список перспективных URL, как /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, чтобы вы могли видеть, какие параметры ожидают и что они должны возвращать.

Edit:

Поток этой ситуации будет выглядеть примерно так:

  1. В dispatch, просьба Ури осмотрены. В зависимости от того, запрашивалась ли деталь или список 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 и возникает ошибка, если соответствующий обработчик не определен.

+0

Это выглядит хорошо, мой вопрос будет таким, как называется def post_list. Это называется каждый раз, когда есть сообщение автоматически с помощью tastypie? Еще лучше, как все вызовы этих методов? они просто автоматически обнаруживаются? –

+0

Обновлен мой ответ. Эти детали остеклены в документах. Я просто должен был посмотреть на источник, чтобы понять это. – dokkaebi

+0

большое спасибо ... да, документы не вдавались в подробности –

Смежные вопросы