Я пишу несколько методов в Django, которые возвращают json. Я обрабатываю исключения самостоятельно и в определенных сценариях, я хочу вернуть ответ Http 500 с телом Json, чтобы клиент мог извлечь (среди прочего) Exception uuid.Полностью отключить шаблоны Http 404/500, когда Debug = False
Это работало отлично с Debug = True
, но при установке на False
следующие результаты кода в HTML страницы ошибки ...
Ret = {"ExceptionId:": "<Exception_uuid>",
"Message": "Some user-friendly error message"}
return HttpResponse(json.dumps(Ret), content_type="application/json", status=INTERNAL_SERVER_ERROR)
Я знаю о последствиях безопасности, которые почему сообщение возвращается здесь никоим образом не связано с исключением, но генерируется нашим собственным кодом, когда возникает исключение (или общее, предоставленное в некоторых случаях). Uuid регистрируется (в идеале, для базы данных, но для файла, если это невозможно), а также трассировки стека, реальную информацию об исключении и т. Д. При обращении к нам пользователь может ссылаться на исключение uuid.
Как я могу заставить django не, чтобы попытаться помешать работе с нечеткой html-страницей, которую я не хочу или не нуждаюсь?
Это Api, все вызовы выполняются либо через Ajax/не-браузерными клиентами - так что tbh меня особо не беспокоит, если браузеры покажут получившееся тело. Я уже начал использовать этот маршрут '({« Успех »: true,« Результат »: {...}}' или '({« Успех »: false,« Исключение »: {...}}', но это означает, что много javascript нужно проверять статусы, и гораздо чище разбить его на анонимные функции ajax '.success' и' .error' jQuery. Мне также нужно иметь возможность делать 401/403, если это необходимо, я бы сказал, что – Basic
@Basic См. обновленный ответ – Aya
Спасибо Aya, я подумал о чем-то подобном, если немного больше invovled (GET/POST, Postdata, функции обратного вызова и т. д.), и это определенная возможность +1 для мыслей, но я собираюсь провести некоторое время и посмотреть, смогу ли я остановить Django с страницами ошибок. – Basic