ローカルマシン(ノードとDjango)で2つの開発サーバーを使用しています。
私は追加しました - Django-cors-headers
プロジェクトに対して、次の設定ですべてのオリジンとメソッド(開発時)を許可します:
CORS_Origin_ALLOW_ALL = 'ALL'
CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)
DELETEを実行しようとすると405が発生します。応答ヘッダーを見る
HTTP/1.0 405 METHOD NOT ALLOWED
Date: Mon, 03 Nov 2014 10:04:43 GMT
Server: WSGIServer/0.1 Python/2.7.5
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: application/json
Access-Control-Allow-Origin: *
Allow: GET, POST, HEAD, OPTIONS
DELETE
&PATCH
/PUT
が許可されたメソッドリストに存在しないことに注意してください。
私の構成に何か足りないものはありますか?
応答は非常によく似ていますリストビュー(/api/resource/
)ViewSetの場合。リストビューは、すべてのオブジェクトを一覧表示するためのGET
と、新しいオブジェクトを作成するためのPOST
のみをサポートします。
DELETE
リクエストは詳細ビュー(/api/resource/1/
)。これは、Django REST Frameworkは、削除しようとしているオブジェクトを認識する必要があり、この情報をリストビューだけから取得することはできないためです。
DRFでpkを使用せずにhttpメソッドDELETEをURLに接続する必要がある場合は、ModelViewSet内でこれを試してください。
@action(methods=['delete'], detail=False)
def delete(self, request):
# your code
[〜#〜] upd [〜#〜]:action
クラス内のModelViewSet
属性はNone
の正当な要求になることに注意してください。どこかで確認する場合は、アクション名だけでなく、リクエストメソッドやリクエストパスも処理してください。