2010-03-07 13 views
7

Posso usare questo verbo in Python Windows SDK. Ma non in produzione. Perché? Che cosa sto facendo di sbagliato?Come utilizzare il metodo HTTP DELETE su Google App Engine?

Il messaggio di errore include (visibile solo tramite Firebug o violinista)

richiesta non valida

o qualcosa di simile

mio codice è simile:

from google.appengine.ext import db 
from google.appengine.ext import webapp 

class Handler(webapp.RequestHandler): 
    def delete(self): 
     key = self.request.get('key') 
     item = db.get(key) 
     item.delete() 
     self.response.out.write(key) 
+0

Tu dici che stai vedendo questo in produzione, sì? Cosa dicono i registri delle richieste nella console di amministrazione di produzione? Ci sono un paio di possibili condizioni eccezionali che il tuo codice non sta gestendo, e se il codice si blocca, vedrai alcune informazioni a riguardo. Inoltre, sarebbe molto utile vedere la richiesta effettiva di essere inviata ad AppEngine. –

+0

@Adam Non ho visto nulla nella console di amministrazione, solo errori più vecchi. –

+0

Sembrerebbe, quindi, che la richiesta non raggiunga nemmeno il gestore delle richieste, quindi non è dove si trova il problema. Puoi pubblicare la richiesta stessa nel corpo della tua domanda? –

risposta

3

Il tuo gestore sembra OK, sei sicuro di inviare le richieste t correttamente? Utilizzando jQuery, questo funziona per me (sia utilizzando dev_appserver e produzione di motori app Google):

$('#delete-button').click(function() { 
    $.ajax({ 
     'type': 'DELETE', 
     'url': '/some/url/that/handles/delete' 
    }) 
}); 

class DeleteHandler(webapp.RequestHandler): 

    def delete(self): 
     if users.get_current_user() == allowed_user: 
      the_data_model.delete() 
     else: 
      self.response.out.write('Permission denied') 

L'invio di un corpo di risposta/messaggio non ha funzionato per me (ad esempio, il "permesso negato" messaggio nel mio esempio non sarà arrivare al cliente). Hai verificato che i tuoi articoli non siano cancellati?

+0

forse lo hanno risolto –

+1

@JaderDias - No, questo funziona perché non vi è alcun corpo di richiesta inviato in questo esempio DELETE request. – jmort253

+0

Questo funziona. Ma tu mandi un corpo, la richiesta non arriva nemmeno al server. – fiatjaf

Problemi correlati