2017-12-31 29 views
-1

저는 새로운 것으로, Flask for Python 3.5에서 폼을 설정하는 데 많은 시간을 소비했습니다. 사용자가 온도 설정 값을 입력하고 제출 버튼을 클릭하고 값을 변수에 저장하도록 할 수 있습니다. 나는 템플릿 파일에서이 코드는 index.html라고 있습니다기본 폼 Flask in 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

모습을, 당신이 내가 가장 빠른 방법은 추측 그 변화를위한 준비가 아니라 그것을 변화시키는 것. 양식을 보내고 양식을 보내려면'POST' 메소드를 사용하고'POST' 메소드를 얻으려면 url에 필요한 편집을 추가하십시오. – senaps

+0

죄송합니다, 이해가 안됩니다. 제발 그걸 바보로 바꿔 주실 래요? – flyoffacliff

+0

왜 이것이 투표에 실패 했습니까? – flyoffacliff

답변

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 

또는 당신이 당신의 템플릿 변경하지 않는로 갈 수 있습니다 : URL의 끝에

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