如何在Google App Engine上使用HTTP方法DELETE?

问题描述:

我可以在Python Windows SDK中使用这个动词。但不在生产中。为什么?我究竟做错了什么?如何在Google App Engine上使用HTTP方法DELETE?

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

你说你在生产中看到这个,是吗?请求日志在生产管理控制台中说什么?有几种可能的例外条件是您的代码无法处理,如果代码崩溃,您会看到一些有关它的信息。 此外,查看发送给AppEngine的实际请求将非常有帮助。 – 2010-03-08 15:07:10

+0

@Adam我在管理控制台中什么都看不到,只是老的错误。 – 2010-03-08 15:48:29

+0

然后,它会出现,请求甚至没有一直到请求处理程序,所以这不是问题所在。你可以在你的问题的正文中发布实际请求吗? – 2010-03-08 15:50:53

该错误消息包括

格式错误的请求

或类似的东西

我的代码看起来像(只能通过萤火或提琴手看到的)你的处理程序看起来很好,你确定你正在发送这些请求t正确吗?使用jQuery,这对我的作品(包括使用dev_appserver和谷歌应用程序引擎制作):

$('#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') 

发送响应体/消息并没有为我工作(例如:拒绝“权限”在我的例子邮件将不到客户)。你有没有验证你的物品没有被删除?

+0

也许他们已经修复了它 – 2010-06-04 15:20:30

+1

@JaderDias - 不,这是可行的,因为在这个示例中没有请求主体发送DELETE请求。 – jmort253 2012-01-18 21:13:14

+0

这有效。但是你发送一个请求的请求甚至不能到达服务器。 – fiatjaf 2012-07-06 15:03:11