如何在提交表单后加载带有值的 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>
提交表单后重新渲染页面,
我的处理程序必须解析输入,获取 'shift_selected'
的值
然后设置'selected_shift'的值。
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>
我在 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>
提交表单后重新渲染页面,
我的处理程序必须解析输入,获取 'shift_selected'
的值
然后设置'selected_shift'的值。
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>