Я хочу знать, как лучше всего обращаться с 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?