Django Rest Framework отладка сообщений и запросов put
Я использую расширение DRF для списка se json для модели, и там я могу отлаживать с debug-toolbar
что GET
запрос, но как я могу отлаживать POST
и PUT
запросы?
у меня есть это для настроек в режиме отладки:
INSTALLED_APPS += ('debug_toolbar',)
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
DEBUG_TOOLBAR_PATCH_SETTINGS = False
INTERNAL_IPS = (
'127.0.0.1'
)
теперь, когда я пытаюсь с Intercept redirects
в debug-toolbar он не показывает мне панель инструментов, когда я делаю POST
.
3 ответов
вы не можете перехватывать перенаправления в DRF browsable api, потому что это ajax и вызывается через javascript. Также панель инструментов не отображается из-за вызова ajax. В качестве обходного пути вы можете временные строки комментариев в debug_toolbar.middleware.DebugToolbarMiddleware#process_request
это отключает панель инструментов в вызове ajax:
...
# Don't render the toolbar during AJAX requests.
# if request.is_ajax():
# return
...
перенаправления по-прежнему не будут работать, но панель инструментов будет видна.
Если вам нужно перехватить запрос / ответ и применить свою собственную обработку, вы можете добавить свой пользовательский mixin, как описано в ответ.
но в самом тривиальном сценарии, учитывая, что вы делаете тестовый запрос POST (или PUT), например, с python запросы:
import requests
response = requests.post('http://localhost:8000/person', json={"name": "dinsdale"})
затем вы можете получить сообщение об ошибке с
print(response.text)
в большинстве случаев вывод будет содержать причину отказа, что вы искали, например,'age' is required
.
вы также можете сделать то же самое с curl
из терминала:
curl -vv --header "Content-Type: application/json" \
--request POST \
--data '{"name":"dinsdale"}' http://localhost:8000/person/