我有两个带有多个键的字典,每个键都有一个值。一个字典有每周的累积工作时间,其他有每周的累积加班时间。关键是日期时间对象,该对象被计算为一周的开始。我的网页上有一个下拉框,其中包含星期几开始
<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
只是字典中作为日期时间对象的键的列表(字典具有相同的键) )
我希望能够从下拉框中单击一个选项,并使两个字典中的相应值出现在下拉框下方。
在if是索引函数的结尾之后,我在这里处理表单(在index()
函数中):
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
中获得了所选星期的累积工作时间和加班时间。我实质上希望这些变量显示在网页上(在下拉框下方),并且显示的默认变量将是到目前为止的当前周数。我该怎么办?
非常感谢任何指针/技巧。
答案 0 :(得分:0)
我最终只是将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
。