質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

725閲覧

Method Not Allowed (405) with Flask

Algeot

総合スコア21

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Jinja2

Jinja2は、Python用のテンプレートエンジンです。テンプレートファイルの読込や文字列の埋込、分岐/ループの制御文のサポートなどの機能を持ちます。HTMLやXML生成によく使用されますが、どのような文書でも生成することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/09/08 04:55

次のコードは / から /form へ post 通信で, ハイパーリンクによって遷移することを期待して作成しました.

index.html

1<!DOCTYPE html> 2<html> 3 <head> 4 <title>The First Page</title> 5 </head> 6 <body> 7 <form method="post" action="{{ url_for('form') }}"> 8 <input type="hidden" name="year" value="2345"> 9 <a href="{{ url_for('form') }}">Click here. </a> 10 </form> 11 </body> 12</html>

app.py

1from flask import Flask, render_template, request 2 3app = Flask(__name__) 4 5@app.route('/') 6def index(): 7 return render_template( 8 'index.html' 9 ) 10 11@app.route('/form', methods=['POST']) 12def form(): 13 year = request.form["year"] 14 return render_template( 15 'form.html', 16 year=year 17 ) 18 19if __name__ == '__main__': 20 app.run(debug=True, host='localhost', port=5050)

しかしタイトルにあるように,

Method Not Allowed
The method is not allowed for the requested URL.

というエラーが発生してしまいます.
これは /form への遷移で post が認められていないということだと思うのですが, app.py にあるように Flask の記法に従って post を可能にしたつもりです.
この問題はどのように修正できますでしょうか.
何卒宜しくお願い致します.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

aタグでリクエストされるメソッドはformタグとは関係なくあくまでGETになります。
HTMLのAタグでPOSTする方法を参考に
formに適当な名前form1なりをつけて<a href="javascript:form1.submit()">~のようにスクリプト実行するとよいです。

投稿2022/09/08 05:17

can110

総合スコア38266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Algeot

2022/09/08 05:55

その通り改変したところ解決いたしました! "javascript:form1.submit()" でリクエストがすべて post になるのですね. JavaScript をよくわかっていないので, 勉強してきます. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問