2017-07-16 15 views
0

私はPython Flaskを使用して、主に動作するWebサーバーをホストしています。私は問題を理解していますが、私はその問題を回避する方法がわかりません。私は、Webサイトが最初に起動したときにテンプレートをレンダリングし、変数 "CurtainCloseTime"に割り当てられた値がないことを、コード内で理解しています。だから私は2つのフォームを私のウェブサイト上で私はカーテンが閉じて、変数名を開くために時間を入力しています。変数 "CCT"はCurtainCloseTimeを意味し、HTMLファイル内の変数です。なぜなら、これをWebページに表示したいからです。ここでPython FlaskとHTMLローカル変数Python(UnboundLocalError)

は、Pythonフラスココード:

@app.route('/', methods=['GET','POST']) 
def index(): 
    if request.method == 'POST': #If there is an input from form 
     CurtainOpenTime = request.form['CurtainOpenTime'] #Assign CurtainOpenTime variable in python to the html CurtainOpenTime variable. 
     CurtainCloseTime = request.form['CurtainCloseTime'] #Assign CurtainCloseTime variable in python to the html CurtainCloseTime variable. 

    return render_template('Index.html', CCT=CurtainCloseTime) 
+0

'request.method'が' 'POST''に設定されていないとどうなりますか?その場合、何をレンダリングする必要がありますか? –

+0

インデントを修正しました。コピーして貼り付けるのではなく、コードを書き直さなければならなかったからです。 request.method == 'GET'をPOSTに設定しないと、400 Bad Requestエラーが発生します。 – ThePGT

+0

私はあなたがテストを変更するよう提案していませんでした。私は、あなたが "GET"の場合に何が起こるべきかを考えるようにお願いしています。変数 'CurtainCloseTime'は、' 'POST''メソッドリクエストを受け取ったときにのみセットされます。あなたは '' GET''の場合に設定しないので、エラーが発生します。 –

答えて

0

まず、私はあなたがあなたの質問にくぼみの問題を抱えていると思います。

@app.route('/', methods=['GET','POST']) 
def index(): 
    if request.method == 'POST': #If there is an input from form 
     CurtainOpenTime = request.form['CurtainOpenTime'] # CurtainOpenTime variable in python to the html CurtainOpenTime variable. 
     CurtainCloseTime = request.form['CurtainCloseTime'] #Assign CurtainCloseTime variable in python to the html CurtainCloseTime variable. 

    return render_template('Index.html', CCT=CurtainCloseTime) 

それはあなたのコード(私たちは確認することができない)の場合は、HTTPメソッドがGET「」の場合、CCT値がない:私はあなたの実際のコードがあるとします。

@app.route('/', methods=['GET','POST']) 
def index(): 
    CurtainCloseTime = # define a default value here 

    if request.method == 'POST': #If there is an input from form 
     CurtainOpenTime = request.form['CurtainOpenTime'] # CurtainOpenTime variable in python to the html CurtainOpenTime variable. 
     CurtainCloseTime = request.form['CurtainCloseTime'] #Assign CurtainCloseTime variable in python to the html CurtainCloseTime variable. 

    return render_template('Index.html', CCT=CurtainCloseTime) 
+0

はい投稿した内容が間違っています。ラズベリーのコードを投稿するために使用している他のコンピュータにコードを書き直さなければなりませんでした。では、CCTの値をrequest.method if文の外側に割り当てる方法は? – ThePGT

+0

ちょうど私がコードの2番目のブロックを書きました。 'if'の前(または後)。したがって、 'GET'メソッドでルートを呼び出すと 'if'以外のすべてが実行され、 'POST'メソッド(通常はフォーム)を呼び出すと、 'if'内のすべてが実行されます。 – leir

関連する問題