私はDRF拡張を使用してモデルのjsonリストを設定し、debug-toolbar
that GET
requestでデバッグできますが、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
を使用すると、POST
を実行してもツールバーが表示されません。
DRFのデバッグ用にDjango-silk
を見つけました。
リクエスト/レスポンスをインターセプトして独自の処理を適用する必要がある場合は、 this answer の説明に従ってカスタムミックスインを追加できます。
ただし、最も単純なシナリオでは、たとえばPOST requests を使用してテストpythonリクエスト(またはPUT)を実行するとします。
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/
それはajaxであり、javascriptを介して呼び出されるため、DRFブラウズ可能APIでリダイレクトをインターセプトすることはできません。また、ajax呼び出しのため、ツールバーは表示されません。回避策として、ajax呼び出しでツールバーを無効にするdebug_toolbar.middleware.DebugToolbarMiddleware#process_request
の一時的なコメント行を使用できます。
...
# Don't render the toolbar during AJAX requests.
# if request.is_ajax():
# return
...
リダイレクトはまだ機能しませんが、ツールバーは表示されます。
ローカルマシンで対話式にデバッグする場合、rest_framework.generics
の関連するput()
またはpost()
メソッドをブレークインしてrequest
データを調べます。
POST
またはPUT
検証エラーの迅速なローカルデバッグ(たとえば、httpステータス400の問題の場合)のために、rest_framework.fields
のField.run_validators()
の最後で中断して調べますそこのエラーメッセージ。