在Tornado中使用POST请求删除数据?

时间:2012-09-07 20:38:32

标签: python tornado

在我看来,使用POST请求从数据库中删除Tornado中的数据是可行的:

def post(self, id):
    # delete data from db using id

在客户端,我们可以发送包含要删除内容的所需id的帖子请求。这是一种有效的方法吗?

我注意到Tornado中的RequestHandler类中还有一个delete方法,但我应该如何正确使用它?一些例子会有所帮助。

1 个答案:

答案 0 :(得分:2)

除非我正在查看过时的exmplae,否则看起来龙卷风支持删除请求。 http://www.tornadoweb.org/documentation/web.html

我会像你使用任何东西一样使用delete方法。使用delete方法设置处理程序(可能指定和id)然后删除该记录(如果存在且用户具有适当的权限)。我从来没有使用过龙卷风,但也许是这样的:

class WidgetHandler(RequestHandler):
    def initialize(self, database):
        self.database = database    

    def delete(self, id):
        # if user has permission to delete
        # if record exists
        # delete it

app = Application([
    (r'/widgets/([0-9]+)', WidgetHandler, dict(database=database)),
    ])

如果你在前面使用javascript / jquery / ajax来发出请求jquery ajax支持delete:

// get your id somehow
// dynamically build url   
$.ajax({
    url: '/widgets/' + theIdYouGotSomehow,
    type: 'DELETE',
    success: function(result) {
        // Do something with the result
    }
});

对于您的评论,您只需使用delete方法点击网址即可。 /widgets/12

从jquery文档中他们说

  

但所有浏览器都不支持[删除,放置等]。

http://api.jquery.com/jQuery.ajax/

一些stackoverflow帖子建议所有现代浏览器都支持delete方法。