2017-12-31 75 views
-1

私は新しく、数時間かけてFlask for Python 3.5でフォームを設定しようとしました。ユーザーが温度設定値を入力して[送信]ボタンをクリックし、その値を変数に保存できるようにします。 私はテンプレートファイルにこのコードを持っているがindex.htmlと呼ばれる:Flaskでの基本的なフォームHTTP 400 - Python 3.5の原因

<html> 
<body> 
    <p><font size="6">Jewell Hot-Tub Controller</font> 
    <br> 
    <font size="4">Water Temperature: {{water_temp}}</p> 
    <br> 
    <font size="4">Set Point: {{set_point}}</p> 
    <br> 
    <font size="4">Enter New Set Point:</p> 
    <form class="form-newtemp" method="get" action="/ChangeTemp"> 
     <input type="text" id="new_sp" name="new_sp" size="5" placeholder="New Temp." required> 
     <input id="1submit" type="submit"> 
    </form> 
</body> 
</html> 

と「flask-test.py」ファイルでこのコード:

from flask import Flask, render_template, request 

app = Flask(__name__) 
app.debug = True 

@app.route('/') 
def index(): 
    return render_template('index.html', water_temp='12345') 

@app.route('/ChangeTemp', methods=['GET']) 
def process(): 
    new = request.form['new_sp'] 
    return 'New set point is:' + new 

textboxに「27」を入力すると、ブラウザを送信しますで400 Bad Requestのページへ:

http://127.0.0.1:5000/ChangeTemp?new_sp=27 

なぜこれが値を返すのではなく、不正な要求エラーを変更するのですか?私が見たチュートリアルではPOSTを使用しましたが、GETを使用しましたが、これには別の構文が必要ですか? また、何かが乱雑であるか間違っているかどうかを教えてください。 ありがとうございました!

編集:私も "request.form.get( 'new-sp'、new)"を試みました。これにより500の内部サーバーエラーが発生します。

+0

外観:

<form class="form-newtemp" method="post" action="{{ url_for('process')}}"> 

、その後

@app.route('/ChangeTemp', methods=['POST]) def process(): new = request.form['new_sp'] return 'New set point is:' + new 

か、あなたのテンプレートを変更しないで行くとすることができます:私は、最速の方法があると思いますそれを変更し、その変更の準備はできていません。フォームを送信するためにフォームを編集し、 'POST'メソッドを取得するためのURLを使用するか、またはURLに必要な編集を追加します。 – senaps

+0

申し訳ありませんが分かりません。私のためにそれを黙らせてもらえますか? – flyoffacliff

+0

なぜこれが投票されたのですか? – flyoffacliff

答えて

0

問題を解決する複数の方法。あなたは、URLの末尾に

@app.route('/ChangeTemp', methods=['GET']) 
def process(): 
    new = request.args.get('new_sp') 
    return 'New set point is:' + new 
関連する問題