DRF передает ошибки через функции - PullRequest
0 голосов
/ 10 мая 2019

Я знаю, что этот вопрос уже может быть задан или очень очевиден, но я ничего не могу найти по нему.

Допустим, у нас есть этот метод в views.py:

def my_api_view(request):
    if request.method == "POST":
        return HttpResponse(other_function())
    else:
        return HttpResponse("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED})

, где other_function() - это функция из другого файла в другом каталоге за пределами приложения Django:

def other_function():
    a = function1()
    b = function2()
    return function3(a,b)

Вопрос : Если что-то пойдет не так в other_function(), function1(), function2() или function3(a,b), как нам сделать так, чтобы мы возвращали HttpResponse с ошибкой? Например, если function1() получить доступ к недоступному ресурсу.

1 Ответ

0 голосов
/ 10 мая 2019

HttpResponse с ошибкой обычно является просто ответом с кодом состояния 400 (указывающим на ошибку с запросом клиента, а не с вашего сервера)

def my_api_view(request):
    if request.method == "POST":
        return HttpResponse(other_function())
    else:
        return HttpResponse("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED}, status=400)

Если вы используете структуру отдыха,соглашение должно возвращать rest_framework.response.Response, хотя.

from rest_framework.response import Response
from rest_framework import status
def my_api_view(request):
    if request.method == "POST":
        return Response(other_function())
    else:
        return Response("{UERR:%s}" % {UERR_POST_REQUEST_EXPECTED}, status=status.HTTP_400_BAD_REQUEST)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...