2017-06-09 7 views
-1

昨日、このコードがうまく動作していなかったようですが、今度はアプリケーションを実行するとUnboundLocalError: local variable 'query' referenced before assignmentエラーが発生します。私が見ることができるように、コードはリダイレクトが行われる前にクエリ変数を明確に定義しています。私は少し困惑しています。Python Flask redirect- UnboundLocalError:代入エラーの前に参照されるローカル変数

誰も問題を見ることはできますか?場合

####Index Page 
@app.route('/', methods=['GET', 'POST']) 
@app.route('/index', methods=['GET', 'POST']) 
def index(): 
     exception = "" 
     try: 
      connectToDB() 
     except: 
      exception = 'Failure to connect to db' 

     form = StaffNames() 
     ranumber = form.ranumber.data 
     if not exception: 
       if form.validate_on_submit(): 
         query = { 
           'staff': dict(staff_choices).get(form.staff.data), 
           'ranumber': form.ranumber.data, 
           'rai_number' : columnsearch(ranumber)["rai_number"], 
           'carrier_format' : columnsearch(ranumber)["carrier_format"], 
           'physical_location' : columnsearch(ranumber)["physical_location"], 
           'brand_title' : columnsearch(ranumber)["brand_title"], 
           'recording_artist' : columnsearch(ranumber)["recording_artist"], 
           'producer' : columnsearch(ranumber)["producer"], 
           'session' : columnsearch(ranumber)["session"], 
           'tx_date' : columnsearch(ranumber)["tx_date"], 
           } 
       return redirect(url_for('results', **query)) 

     return render_template(
      'index.html', title='Search Page', exception=exception, form=form 
     ) 
+1

あなたのインデントはすべての場所にあります。タブとスペースが混在していないか確認してください。 –

+0

私はそれを修正しましたが、私はまだインデックスページを読み込むことができません。 – neilH

+0

インデントが修正されました。かなり明確です。 'query'は' form.validate_on_submit() 'がfalseのときには定義されません。 –

答えて

2

form.validate_on_submit()Falseと評価された場合、queryが定義されていません。

インデントを確認してください。

+0

大丈夫、応答のために歓声。 'form.validate_on_submit()'はフォーム内の[DataRequired()])バリデーターに関連しています。ユーザーがデータを入力したかどうかを評価するには、ページを読み込む必要があります。誰かがフォームにデータを入力して提出する機会がある前に、それがどのように誤って評価されるのか分かりません。 – neilH

+2

@ bms9nmh:それはどういうことでしょう。投稿されたデータをデバッグします。そして、少なくともreturn文が正しくインデントされていること。 –

+0

ああ... ...申し訳ありませんが、私のreturn文が正しくインデントされていませんでした。あなたの助けを借りてくれてありがとう。 – neilH

関連する問題