如何在提交表单后加载带有值的 Jinja2 模板

How to load Jinja2 template with values after form submission

我在 Jinja2 模板中有一个表单。这就是我要用它做的事情:

最好的方法是什么? 例如,假设我的表单中有一个 <select> 输入,如下所示:

  <select id="shift_selected" name="shift_selected">
  {% for shift in Shifts %}
    <option value="{{ shift }}" {{ 'selected' if shift == selected_shift }}>{{ shift }}</option>
  {% endfor %}
  </select>

提交表单后重新渲染页面,

args['selected_shift'] = self.request.get("selectedShift")

template.render(参数)

处理程序本质上是接收表单值中的一些数据,并将相同的数据作为模板变量值发回。有一个更好的方法吗。如果对长表格完成此方法非常乏味。

实际上,您甚至可以将 request 对象作为参数传递给 Jinja 模板。或者写一个函数将request中的所有GET或POST参数复制到Jinja模板参数中。

args['request'] = self.request
template.render(args)

<select id="shift_selected" name="shift_selected">
{% for shift in request.get('selectedShift') %}
    <option value="{{ shift }}" {{ 'selected' if shift == selected_shift }}>{{ shift }}</option>
{% endfor %}
</select>