Python Flask выводит выпадающие значения на страницу - PullRequest
0 голосов
/ 02 мая 2019

У меня есть два словаря с несколькими ключами и одним значением для каждого ключа. Один диктат имеет еженедельные кумулятивные часы работы, другой еженедельные кумулятивные часы сверхурочных. Ключ - это объект даты и времени, который рассчитывается как начало недели. На моей веб-странице есть выпадающий список, который содержит начало недели

  <form action="{{ url_for('index') }}" method="post">
    <select class="form-control" name="cumuls" id="select1" onchange="if(this.value != 0) { this.form.submit(); }">
        <option value="0">Cumulative for week beginning...</option>
        {% for i,j in zip(wks, wks2) %}
        <option value="{{ i }}">{{ j }}</option>
        {% endfor %}
    </select>
  </form>

(wks2 - это просто отлично отформатированная версия wks, а wks - это просто список ключей из dicts, которые являются объектами даты и времени (словари имеют одинаковые ключи))

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

Я обрабатываю форму здесь (в функции index()), после того, как if является концом индексной функции:

if request.method == 'POST':
    if 'cumuls' in request.form:
        week_Begin = request.form['cumuls']
        listHours = listDates(current_user.get_id())
        dct_hours, dct_overtime, wks = weeklySum2(listHours)

        #strfdelta is a custom function that formats timedeltas
        cumul_hrs = strfdelta(dct_hours[datetime.fromisoformat(week_Begin)], '%H:%M')

        cumul_overtime = strfdelta(dct_overtime[datetime.fromisoformat(week_Begin)], '%H:%M')

        return redirect(url_for('index'))

listHours = listDates(current_user.get_id())

dct_hours, dct_overtime, wks = weeklySum2(listHours)
print(wks)
# wkbgn = weekbeginning, this just formats the dates nicely
wks2 = [wkbgn.strftime('%A') + ' ' + wkbgn.strftime('%-d') + ' ' + wkbgn.strftime('%b') + ' ' + wkbgn.strftime('%Y') for wkbgn in wks]

currentDay = datetime.today()
start_week = (currentDay - timedelta(days=currentDay.weekday()))

return render_template('index.html', form=form, hoursDb = listHours, dct_overtime=dct_overtime,dct_hours=dct_hours, wks=wks, wks2=wks2, zip=zip)

Таким образом, в пределах if 'cumuls'... я в основном получаю совокупные рабочие и сверхурочные часы для выбранной недели, в cumul_hrs и cumul_overtime, что работает. По сути, я хочу, чтобы эти переменные отображались на веб-странице (под раскрывающимся списком), и отображаемая переменная по умолчанию будет накапливать текущие недели. Как я мог это сделать?

Любые указатели / советы приветствуются.

1 Ответ

0 голосов
/ 02 мая 2019

В итоге я просто изменил перенаправление внутри оператора elif на

return redirect(url_for('index', cumul_hrs=cumul_hrs, cumul_overtime=cumul_overtime))

, а затем получил переменные из URL с помощью:

cumul_hrs, cumul_overtime = request.args.get('cumul_hrs'), request.args.get('cumul_overtime')

и пропустил их через render_template.

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