用python烧瓶从数据库中删除行? [英] Deleting rows from database with python flask?

查看:193
本文介绍了用python烧瓶从数据库中删除行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用瓶框架,似乎无法从数据库中删除行。下面的代码给出了一个405错误:该方法不允许请求的URL。任何想法?



在py中:

  @ app.route ('/ delete /< postID>',方法= ['POST'])
def delete_entry():
如果不是session.get('logged_in'):
abort(401 )
g.db.execute('删除条目WHERE id =?',[postID])
flash('Entry was deleted')
return redirect(url_for('show_entries', )




在html:

 < a href =/ delete / {{entry.id}}>< h3>删除< / h3>< / a> 


解决方案

点击< a href ...>删除< / a> 将发出一个GET请求,而您的delete_entry方法只会响应POST。



1.用表格替换链接提交按钮或2.链接提交一个隐藏的形式与JavaScript。

这是如何做1:

 < form action =/ delete / {{entry.id}}method =post> 
< input type =submitvalue =Delete />
< / form>

下面是如何做2(与jQuery):

  $(document).ready(function ){
$(a.delete)。click(function(){
var form = $('< form action =/ delete /'+ this.dataset.id +'方法=帖子>< / form>');
form.submit();
});
});

...



$ b

你应该做的一件事情就是让你的delete_entry方法响应GET GETs被认为是幂等的是安全的重复运行,不执行破坏性的行动)这是一个问题,还有一些细节。


I am using a flask framework, and can't seem to delete rows from the database. The code below gives a 405 error: "The method is not allowed for the requested URL." Any ideas?

In the py:

@app.route('/delete/<postID>', methods=['POST'])
def delete_entry():
    if not session.get('logged_in'):
        abort(401)
    g.db.execute('delete from entries WHERE id = ?', [postID])
    flash('Entry was deleted')
    return redirect(url_for('show_entries', post=post))

In the html:

<a href="/delete/{{ entry.id }}"><h3>delete</h3></a>

解决方案

Clicking <a href...>delete</a> will issue a GET request, and your delete_entry method only responds to POST.

You need to either 1. replace the link with a form & submit button or 2. have the link submit a hidden form with JavaScript.

Here's how to do 1:

<form action="/delete/{{ entry.id }}" method="post">
    <input type="submit" value="Delete />
</form>

Here's how to do 2 (with jQuery):

$(document).ready(function() {
    $("a.delete").click(function() {
        var form = $('<form action="/delete/' + this.dataset.id + '" method="post"></form>');
        form.submit();
    });
});

...

<a href="#delete" class="delete" data-id="{{ entry.id }}">Delete</a>

One thing you should not do is make your delete_entry method respond to GET. GETs are meant to be idempotent (are safe to run repeatedly and don't perform destructive actions). Here's a question with some more details.

这篇关于用python烧瓶从数据库中删除行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆