Как использовать Tastypie для обработки в GET и POST с нестандартным ORM - PullRequest
0 голосов
/ 05 октября 2019

Я хочу знать, как лучше всего обращаться с GET / POST в Tastypie. Я не сохраняю и не сохраняю данные в базе данных в бэкэнде.

2 ajax-вызовов, ajax_get («GET»), ajax_save («POST», big_data> 5mb)

ajax_save () для сохранениябольшое количество данных. Если вы используете GET, nginx, у gunicorn есть ограничение, вы должны настроить его. Поскольку я не хочу настраивать nginx, gunicorn, поэтому использовать POST.

Следующее может работать. Но есть ли лучший способ?

class HelloResource(Resource):

  file_result = fields.CharField(attribute='file_result', null=True)

  class Meta:
    resource_name = ‘hello’
    allowed_methods = ('get', 'post')  # Make no difference with/without for my case.
    always_return_data = True
    max_limit = None
    limit = 0

  def dehydrate(self, bundle):
    """
      Handle ajax POST.

    """

    # When ajax_save() is called, it comes here.
    # But, the problem is when ajax_get() is called, it also comes to here.
    # Have to distinguished unrelated call.

    call_type = bundle.data['type']  # Figure out JS client action.

    ...

    # How to return error in 'request'????


  def get_object_list(self, request):
    """
      Handle ajax GET.
    """

    try:
      # ajax_get(). Works! But,  if calling ajax_save(), it does NOT come here.
      # Therefore, I used dehytrate()!!!
      call_type = request.GET.get('type', None)   # Figure out JS client action.

      results = []

      hello_files = non_orm_models.Hello()

      # Javascript to display this error. It is handled in success
      # 'done' handler, not 'fail' handler.
      hello_files.error = 'I find error here! Not error throw by Tastypie.'

      return results.append(hello_files)

В итоге, вопросы:

1) Какой лучший способ справиться с POST? Хотя я очень доволен обработкой GET, я ищу лучший способ обработать GET, POST. Код выглядит не очень красиво.

2) Как вернуть ошибку в POST?

...