Передать значение в маршрут flask при изменении раскрывающегося списка - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть flask шаблон, отображаемый со значением по умолчанию в функции маршрута. Я пытаюсь изменить значение, выбрав опцию в раскрывающемся списке. Мне удалось получить выбранное значение javascript следующим образом. Шаблон

html (только часть раскрывающегося списка)

<div class="dropdown-menu scrollable-menu">
    <a class="dropdown-item" data-attVal="1" href="#">Opt 1</a>
    <a class="dropdown-item" data-attVal="2" href="#">Opt 2</a>
<div>

javascript

$(".dropdown-menu a").click(function () {
  var selText = $(this).text();
  var selVal = $(this).attr("data-attVal");

  console.log(selText+":"+selVal);
});

app.py

@app.route('/', methods=['GET','POST'])
def display():
    i = 1
    # do many things based on value of i

    return render_template('display.html', response = data)

Мне не нужно javascript для связи с моим flask app.py. Это была моя первоначальная мысль. Но я не знаю, как поступить после этого или позвонить по маршруту / из моего html шаблона. Мне нужно изменить значение i на основе раскрывающегося списка data-attVal.

1 Ответ

0 голосов
/ 03 марта 2020

Я нашел этот обходной путь. Я не уверен, является ли это наиболее элегантным способом реализации этого.

html template удалил пользовательский атрибут data-attVal, так как я не работал с JS.

<div class="dropdown-menu scrollable-menu">
     <a class="dropdown-item" href="{{url_for('selectDisplay',id=0)}}">Opt1</a>
     <a class="dropdown-item" href="{{url_for('selectDisplay',id=1)}}">Opt2</a>
<div>

app.py

Я создал дополнительный маршрут для обработки значения строки запроса.

@app.route('/select', methods=['GET','POST'])
def selectDisplay():
     i = int(request.args.get('id'))
     # do things according to value of i

     return render_template('display.html', response = deserialized_bug_data['list_of_turns'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...