Quando faccio una richiesta DELETE HTTP a un'applicazione django. restituisce direttamente una risposta 301 (spostata in modo permanente) e mi reindirizza alla richiesta di GET dello stesso url. Suppongo che la richiesta Http PUT restituisca 301 proprio come la richiesta DELETE. C'è un modo per elaborare la richiesta DELETE con django?Http La richiesta di cancellazione di django restituisce un 301 (spostato in modo permissivo)
risposta
Il reindirizzamento è causato dall'impostazione APPEND_SLASH:
APPEND_SLASH
predefinito: true
Quando impostata su true, se la richiesta URL non corrisponde a nessuno dei modelli in l'URLconf e non termina con una barra , un reindirizzamento HTTP viene inviato a lo stesso URL con una barra allegata. Si noti che il reindirizzamento potrebbe causare la perdita di tutti i dati inviati in una richiesta POST a .
Assicurarsi che server e client siano coerenti con le barre finali.
Se il progetto non ha bisogno delle barre finali (ovvero, è un'API senza barre finali) è possibile disabilitarlo. Altrimenti, assicurati che urlconf accetti i percorsi senza una barra finale.
Questa opzione è stata configurata per il componente $ resource da angularJS 1.30.beta6 https://github.com/angular/angular.js/commit/3878be52f6d95fca4c386d4a5523f3c8fcb04270 – AlexandruC
Grazie amico, risparmi la mia giornata! –
Ho riscontrato questo problema durante l'utilizzo di AngularJs e Django REST.
Django Rest stava reindirizzando il client per richiedere l'URL con una barra finale mentre '$resource
di AngularJS' assicura che non ci sia un trattino finale sui suoi URL. Questo è descritto in questo issue
Sullo stesso link vedrai suggerimenti per utilizzare il servizio $http
più flessibile invece di $resource
. Ma ... Volevo davvero usare $resource
(meno codice).
Quindi la soluzione è stata banale, dal momento che il team di Django REST hanno rappresentato per questo recently:
router = DefaultRouter(trailing_slash=False)
http://django-rest-framework.org/api-guide/routers.html
(ho aggiunto a questo al mio blog da quando mi piacerebbe mantenere un log di pochi trucchi usando AngularJS & Django REST)
- 1. Django restituisce l'HTTP 301?
- 2. Wordpress 301 Spostato Risposta permanente su richiesta Jquery.post
- 3. Reindirizzamenti restituisce "Oggetto spostato su"
- 4. Disabilita la conferma sulla richiesta di cancellazione in PHPhotoLibrary
- 5. Come testare un reindirizzamento HTTP 301?
- 6. Richiesta di preflight CORS che restituisce HTTP 405
- 7. Richiesta HTTP di nodo per Restful API che restituisce JSONP
- 8. Leggere una richiesta HTTP non elaborata in Django 1.3
- 9. Il server di sviluppo Django non gestisce la richiesta Ajax
- 10. test di uguaglianza permissivo sulla stringa
- 11. HTTP: la richiesta POST riceve un 302, se la richiesta di reindirizzamento è una GET?
- 12. Reindirizzamento HTTP: 301 (permanente) vs. 302 (temporaneo)
- 13. come effettuare la richiesta http sincrona in js angolari
- 14. Richiesta Http in Emacs
- 15. In che modo l'operatore di cancellazione C++ trova la posizione di memoria di un oggetto polimorfico?
- 16. Richiesta di trasformazione HTTP in Angular 2
- 17. Eseguire reindirizzamento 301 da http a https in Apache Tomcat
- 18. Cancellazione di un ByteBuffer
- 19. ConcurrentModificationException durante la cancellazione di un sottoelenco
- 20. Esiste un modo per convertire la posta in arrivo in una richiesta POST HTTP?
- 21. Come visualizzare la dimensione di una richiesta HTTP in Fiddler?
- 22. Node.js Richieste di ritorno 301 reindirizzamenti
- 23. Esempio di richiesta HTTP IOS
- 24. Richiesta HTTP in Ubuntu
- 25. Invio di richiesta http in node.js
- 26. Arresto/Cancellazione di task periodici in Django-Sedano
- 27. File statici Django su S3: S3ResponseError: 301 spostati in modo permanente
- 28. RICHIESTA RICHIESTA RICHIESTA Restituisce Nessuna uscita
- 29. Utilizzo di node.js La richiesta del client remoto HTTP non restituisce alcun corpo
- 30. Come utilizzare la richiesta in un ModelForm in Django
E 'possibile che manchi la barra finale nell'URL per DELETE? –
Puoi confermare se la vista rilevante è stata caricata o meno? Magari inserire un log all'interno della vista per confermare che viene caricato. Inoltre, questo potrebbe essere il tuo server web e non Django per nulla sta reindirizzando la richiesta? –
Questo era il problema. Il mio client è backbone.js e sembra che backbone.js non metta la barra finale per modellare gli URL. così in urls.py, ho aggiunto un'altra configurazione di URL senza barra finale e ha funzionato. – yilmazhuseyin