Python 方法不允许该方法不允许用于请求的URL。关于删除方法
我正在尝试为Flask教程应用程序Flaskr编写一个删除方法。到目前为止,我已经能够设置一个delete方法并修改我的html来访问它,但是当我尝试使用它时,我收到一个错误消息:“methodnotallowed该方法不允许用于请求的URL。” 这是我的方法Python 方法不允许该方法不允许用于请求的URL。关于删除方法,python,flask,Python,Flask,我正在尝试为Flask教程应用程序Flaskr编写一个删除方法。到目前为止,我已经能够设置一个delete方法并修改我的html来访问它,但是当我尝试使用它时,我收到一个错误消息:“methodnotallowed该方法不允许用于请求的URL。” 这是我的方法 @app.route('/delete', methods=['DELETE']) def delete_entry(): if not session.get('logged_in'): abort(401)
@app.route('/delete', methods=['DELETE'])
def delete_entry():
if not session.get('logged_in'):
abort(401)
g.db.execute('delete from entries')
g.db.commit()
flash('Entry was successfully deleted')
return redirect(url_for('show_entries'))
这是我的HTML文件
{% extends "layout.html" %}
{% block body %}
{% if session.logged_in %}
<form action="{{ url_for('add_entry') }}" method=post class=add-entry>
<dl>
<dt>Title:
<dd><input type=text size=30 name=title>
<dt>Text:
<dd><textarea name=text rows=5 cols=40></textarea>
<dd><input type=submit value=Share>
</dl>
</form>
{% endif %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry.title }}</h2>{{ entry.text|safe }}
<form action="{{ url_for('delete_entry') }}" method=delete class=delete_entry>
<input type="submit" value="Delete entry" />
</form>
{% else %}
<li><em>Unbelievable. No entries here so far</em>
{% endfor %}
</ul>
{% endblock %}
{%extends“layout.html”%}
{%block body%}
{%if session.logged_in%}
标题:
正文:
{%endif%}
{entries%%中的条目的百分比}
- {{entry.title}{{entry.text | safe}}
{%else%}
- 难以置信。到目前为止,这里没有参赛作品
{%endfor%}
{%endblock%}
我也知道这个问题:)
在这种情况下,解释为html
的方法
字段仅接受GET
和POST
作为有效值。您给它的值是DELETE
。我认为它将返回到任何其他有效值
您确实可以验证烧瓶日志中实际使用的方法。
由于后退,您在/delete
的视图将使用方法
参数中不存在的方法访问
有两种方法可以解决这个问题
GET
或POST
访问视图。这是两个选项中最糟糕的一个,因为GET
请求不应该有任何副作用,也不是RESTfulajax
请求,而不是使用“内置”html表单$("#delete_btn").click(function(){
// send ajax request here
return false; // prevent the form from submitting
}
其中,delete\u btn
将是您提交的id
按钮
<input id="delete_btn" value="Delete entry">
您还可以在ajax
方法中注册回调,以便在页面成功时重新加载页面,并在页面失败时显示警告或您想要的任何内容
请不要使用url\u for
函数填写ajax请求的url。这将不必要地将javascript耦合到html。您应该将其写入submit按钮的自定义数据属性中,并使用jQuery读取该属性
$.ajax({
url: "your delete url",
method: "DELETE",
})