每当我尝试向Flask表单提交数据时,都会出现以下错误:
Method Not Allowed The method is not allowed for the requested URL.
字符串
我想问题出在我正在做的return redirect(url_for('database'))
中。我也试过return render_template('database.html)
。我试图在表单条目提交到数据库后调用数据库页面。
我的代码的相关部分如下:
@app.route('/entry', methods=['GET', 'POST'])
def entry_page():
if request.method == 'POST':
date = request.form['date']
title = request.form['blog_title']
post = request.form['blog_main']
post_entry = models.BlogPost(date = date, title = title, post = post)
db.session.add(post_entry)
db.session.commit()
return redirect(url_for('database'))
else:
return render_template('entry.html')
@app.route('/database')
def database():
query = []
for i in session.query(models.BlogPost):
query.append((i.title, i.post, i.date))
return render_template('database.html', query = query)
型
entry.html is.
THIS IS THE BLOG ENTRY PAGE
blog:
<html>
<form action='/database' method = "post">
date<input name = "date" type = "text" class="text">
title<input name = "blog_title" type = "text" class="text">
main<input name = "blog_main" type = "text" class="text">
<input type = "submit">
</form>
</html>
型
和database.html.
THIS IS THE QUERY:
{{query}}
型
9条答案
按热度按时间hgqdbh6s1#
这里发生的事情是数据库路由不接受任何URL方法。
我会尝试将url方法放在app route中,就像你在entry_page函数中所做的那样:
字符串
az31mfrm2#
我想你忘了为你的数据库函数添加方法。
字符串
f3temu5u3#
我在IIS中部署Flask应用程序时遇到了类似的问题。显然,IIS不接受包含下划线(“_”)的路由。当我删除下划线时,问题得到了解决。
fhg3lkii4#
我遇到了同样的问题,我的解决办法是替换:
字符串
与
型
在我的
POST
和DELETE
路由中。czq61nw15#
flask需要有enctype="”必须在表单标签中添加。如下所示。
字符串
olqngx596#
我也遇到过类似的问题,在我的开发服务器上,重定向随机地给出404或405。这是gunicorn示例的问题。
原来我没有正确关闭gunicorn示例,然后启动一个新的示例进行测试。不知何故,两个进程同时运行,监听同一个端口8080并相互干扰。奇怪的是,在我杀死所有终端后,它们继续在后台运行。不得不使用
fuser -k 8080/tcp
手动杀死它们omvjsjqw7#
尝试添加方法
@app.route('/database',methods=' GET ',' POST '])
wwtsj6pe8#
可能与此错误并行:假设您的端点如下所示:
字符串
现在,如果在你的html中
action
属性不匹配提到的端点,自然,你会得到一个错误:型
这是显而易见的,但可能是鬼鬼祟祟的。希望它能帮助到一些人。
e0uiprwp9#
我花了将近5个小时,对我来说,解决方案只是首先指定方法,然后是操作。
字符串