フラスコ、Python、HTMLを使用してWebアプリケーションを作成しています。私の問題は、このサーバー が理解できないという要求を送信し、私は、Webページをロードする最初の時間は、私は次のようなエラーにフラスコ、python、HTML、flask.request.formの異常な初期化動作でエラーが発生しました
不正な要求ブラウザ(またはプロキシ)を取得することです。
私が最初にどのflask.request.form
呼び出しなしでそれを実行し、その後、(詳細は以下)でそれらをバック入れて「だまし」で最終的にロードするためのページを取得することができますよ。私の初期設定で何かが間違っているはずです。私はflask
に新しく、python
とHTML
を使っています。
私はexample
というディレクトリから作業しているとします。私はPythonスクリプトtest.py
と呼ばれ、次のディレクトリ構造でtest.html
と呼ばれるHTMLテンプレートがあります。
\example\test.py
\example\templates\test.html
私のPythonスクリプトをtest.py
です:
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
result = flask.request.form['result']
return flask.render_template('test.html', result=result)
# return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
とtest.html
の私のHTMLは
<html>
<head>
</head>
<body>
<form action="/" method="post">
Enter something into the box:
<input type="text" name="result"/><br>
<input type="submit" value="Execute!"/>
</form>
</body>
</html>
です
エラーを再現する手順
1:あなたが
不正な要求ブラウザ(またはプロキシ)次のエラーが表示されるはずです
test.py
スクリプトを実行し、ブラウザでRunning on http://127.0.0.1:5000/
をURLを開くには、その要求を送信しこのサーバ は理解できませんでした。
2:def get(self)
関数の最初の2行をコメントアウトしてtest.py
この
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
# result = flask.request.form['result']
# return flask.render_template('test.html', result=result)
return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
3のように見えるようにdef get(self)
関数の3番目の行のコメントを解除:URLを更新し、あなたが表示されます(私は最終的にはresult
の値を返すことができますが、def get(self)
関数の最初の2行のコメントを外してcommenを取り消してください。 test.py
この
import sys
import flask, flask.views
app = flask.Flask(__name__)
app.secret_key = "bacon"
class View(flask.views.MethodView):
def get(self):
result = flask.request.form['result']
return flask.render_template('test.html', result=result)
# return flask.render_template('test.html')
def post(self):
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
app.run()
5のように見えるようにdef get(self)
機能の3行目をT:URLを更新し、今あなたが望むようなものが働くことになります参照してください。
これは、このウェブページを私に表示するためにブラウザを "トリック"しなければならないというこの奇妙な振る舞いを示す本当の問題を示すおもちゃの例です。The
素晴らしい偉大な説明をしてくれてありがとう! – erin
これは、Flaskにデフォルトのリクエスト値を実装する方法の素晴らしい説明です。ありがとうございました。 – earthmeLon
私はApacheサーバー上でFlaskアプリケーションを実行しています。私が何をしても、私は間違ったリクエストエラーを受け取ります。 'ブラウザから応答が送られました'など。私のサーバーと何か関係がありますか? –