2014-11-03 15 views
8

Yerel makinemde iki dev sunucusuyla çalışıyorum (düğüm & django's).Django/DRF - 405 SİL çalışma modunda izin verilmiyor

tüm kökenlerini aşağıdaki ayarlarla (dev üzerine) & yöntemleri izin vermek projeye django-cors-headers ekledik: SİL çalışırken

CORS_ORIGIN_ALLOW_ALL = 'ALL' 
CORS_ALLOW_METHODS = (
     'GET', 
     'POST', 
     'PUT', 
     'PATCH', 
     'DELETE', 
     'OPTIONS' 
    ) 

ben 405 alıyorum. tepki baktığımızda DELETE & PATCH/PUT izin yöntemler listede var olmadığını

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 

Bildirim başlıklarını.

Yapılandırmamda eksik bir şey var mı?

+0

Görünümünüz bu yöntemleri uyguluyor mu? ModelViewSet kullanıyor musunuz? karışımlar, ApiView? – argaen

+0

iyi eski 'viewets.ModelViewSet' - testler mükemmel çalışır. – haki

+0

Görünümünüzde hangi yöntemlere izin verilir? Dokümanlar nedeniyle CORS_ALLOW_METHODS, yalnızca global olarak kullanılabilen, ancak otomatik olarak görüntülenmek için eklenmeyen yöntemleri tanımlar. Bir şey daha 'CORS_ORIGIN_ALLOW_ALL' boole değil, string olmalı. – coldmind

cevap

22

yanıtı ViewSet için liste görünümünde (/api/resource/) 'yeçok benziyor. Liste görünümleri, yalnızca tüm nesneleri listelemek için GET desteğini ve yeni bir nesne oluşturmak için POST desteğini destekler.

DELETE isteklerine yalnızca ayrıntı görünümü (/api/resource/1/) izin verilir. Bunun nedeni, Django REST Framework'ün hangi nesneyi silmek istediğinizi bilmesi gerektiğidir ve bu bilgiler yalnızca liste görünümünden alınamaz.

+1

Teşekkürler adam - O buydu . Pk'yi url'den çıkardım ve istek daha sonra ayrıntıya kadar listeye çıktı. – haki

+0

DRF yönlendirici modülü kullanılıyorsa, örn. "user-detail", "kullanıcı listesi" değil PUT işlemini destekler. http://www.django-rest-framework.org/api-guide/routers/ –