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 ответов


нашел django-silk для отладки DRF.

https://github.com/django-silk/silk/


вы не можете перехватывать перенаправления в 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/