私は私のフラスコフォームにデータを送信しようとするたびに、私は次のエラーを取得しています:フラスコエラー:「メソッド許可されない方法が要求されたURLに許可されていません」
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です...
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}}
ありがとう、それは仕事をしました。何らかの理由でそれ以上データベースにコミットしていませんが。 –
これは、データベースのサブミット機能がentry_page関数内にあるのに対し、postという形式はデータベース関数にリダイレクトされているためです。 entry_page関数からそのロジックを移動し、それをデータベース関数 – Wondercricket
に入れたいと思うかもしれません。私はなぜ私が完全に理解するか分からない。リダイレクトが発生する前にデータベースにデータをコミットするように依頼していますが、これは '/ database'以外のページにリダイレクトしているときに機能します。とにかく、あなたの助けに感謝します。 –