Заполнение зависимого выпадающего списка с помощью Python и Flask

#javascript #python #html #flask #drop-down-menu

#javascript #python #HTML #flask #выпадающее меню

Вопрос:

У меня есть веб-приложение с формой, которая принимает два входных данных: имя файла и номер спринта.

Первый, который принимает имя файла, представляет собой динамически заполняемый список, который извлекает список файлов CSV в определенном каталоге и соответствующим образом заполняет список форм.

В каждом из этих CSV-файлов есть несколько повторяющихся номеров sprint (например, 2012, 2027 и т. Д.). После выбора из первого выпадающего списка я хочу, чтобы второй выпадающий список был заполнен списком всех уникальных номеров sprint из выбранного имени файла CSV. Эти уникальные номера спринта, вероятно, могут быть сгенерированы с помощью скрипта python, а затем результаты должны каким-то образом использоваться для заполнения второго выпадающего списка.

Смотрите Картинку для лучшей идеи.

Просмотр веб-страницы

Кто-нибудь знает, как подойти к этому?

 <form action="{{ url_for('output_burndown_chart') }}" method="post">
    <label for="file_name">File Name:</label><br>
    <!-- <input type="text" name="file_name"><br><br> -->
    <select id="file_name" name="file_name">
        {% for i in dir_files %}
        <option value="{{ i }}">{{ i }}</option>
        {% endfor %}
    </select>
    <br>
    <br>
    <label for="sprint_number">Sprint Number:</label><br>
    <input type="text" name="sprint_number"><br><br>
    <input type="submit">
</form>
 
 @app.route('/burndown', methods=['GET','POST'])
def output_burndown_chart():
    if request.method == "POST":
        sprint_num = request.form['sprint_number']
        file_name = request.form['file_name']
        dir_name = "./files"
        file_path = os.path.join(dir_name, file_name)
        df_final = burndown_gen(file_path, sprint_num) 
        return render_template('test.html', df_final=df_final, sprint_num=sprint_num)
    elif request.method == 'GET':
        dir_files = os.listdir('./files/')
        print(dir_files)
        return render_template('burndown_form.html',dir_files=dir_files)
 

Комментарии:

1. У вас есть вопрос? В настоящее время вы только что объяснили, чего хотите. Хотя вы должны включить свой код и задать свой вопрос конкретно об этом коде. Мы можем помочь вам с этого момента.

2. Извините. Я действительно хочу знать, какой подход следует предпринять. На самом деле нет кода для отображения, поскольку я не знаю, с чего начать.

3. Нет, беспокойства. Спасибо за включение python и HTML. В настоящее время у вас есть только 1 элемент dropdown ( <select> ) в вашем HTML. Разве не должно быть и второго? Второй будет заполнен на основе результата первого элемента select через AJAX.

4. Это то, что вы должны попробовать: 1. Заполните первое <select> поле в шаблоне flask. 2. Используйте JavaScript для обнаружения пользовательского ввода (изменения) в этом первом поле и fetch отправки запроса на сервер. Используйте ответ для заполнения второго <select> поля. 3. Отправьте свою форму.