Почему моя переменная 'users_choice' упоминается до определения? - PullRequest
0 голосов
/ 06 августа 2020

У меня есть HTML страница choose.html с несколькими кнопками, каждая с тем же именем. Я хотел бы присвоить значение нажатой кнопки переменной users_choice в моем коде Python / Flask.

<form action="/" method="post">
   <div class="card_container_choose">
       <div class="row_choose">
           <div class="column_choose">
              <button type="submit" name="choose" value="Alex"/>
              <button type="submit" name="choose" value="Alfred"/>
              <button type="submit" name="choose" value="Anita"/>
              <button type="submit" name="choose" value="Anne"/>
           </div>
        </div> 
    </div>
</form> 

В настоящее время у меня есть список имен all_names=["Alex", "Alfred", "Anita", "Anne"], и я Я пытаюсь сопоставить значение нажатой кнопки с одним из имен в списке, прежде чем присвоить его users_choice. После присвоения я ссылаюсь на users_choice в своей numpy матрице.

all_names = ["Alex", "Alfred", "Anita", "Anne"]

@app.route("/", methods=["GET", "POST"])
def choose():
    if request.method == "POST":

        for name in all_names:
            if request.form.get('choose') == name:
                users_choice = name
                break

         users_choice_index = np.where(user_board == users_choice)[0]

Но я получаю это сообщение об ошибке

UnboundLocalError: local variable 'users_choice' referenced before assignment

, указывающее, что users_choice никогда не было присвоено значение . Может ли кто-нибудь помочь объяснить, что происходит и как это исправить?

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Переменная находится в l oop, что делает ее недоступной глобально. Вы должны сначала определить ее вне l oop, например, users_choice = '', а затем делать то, что вы делаете.

0 голосов
/ 06 августа 2020

Я не думаю, что кнопка может передавать значение. Попробуйте установить значения в полях формы (возможно, выбрать), а затем только 1 кнопку для отправки формы. Или начните использовать ajax, чтобы вы могли назначать вызовы ajax любым кнопкам, которые хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...