在 jinja 模板中保留表单值

To retain the form values in the jinja template

我有一个用于 post 数据的表格

<form enctype="multipart/form-data" method="post" action="">
  <div class="form-group">
     <label>Application Name <span class="mandatory">*</span></label>
     <input type="text" class="form-control" name="app_name" id="appname" required maxlength="40">
     <button>submit</button>
   </div>
 </form>

在烧瓶中,我正在获取表单数据并尝试执行 post 方法

if request.method == "POST":
   application_data = request.form.to_dict()
   postedata = post(application_data )
   if posteddata:
      print("sucessfully posted")
   else:
      print("unsucessful")
      return render_template("application/addapplication.html", data=application_data)

但我想要的是当 else 部分执行时,这意味着 post 数据不会发生我想保留表单中的值。但是,由于此处页面将重新加载表单数据正在消失。请问有人可以帮我吗?

<input type="text" value="{{ request.form.get('app_name','')}}" class="form-control" name="app_name" id="appname" required maxlength="40">

对于Select标签,我们从Flask中获取数据flask_option = 'batman'.

<select>
  <option {% if flask_option == "superman"%} selected {% endif %} value="superman">Clark</option>
  <option {% if flask_option == "batman"%} selected {% endif %} value="batman">Bruce</option>
  <option {% if flask_option == "wonderwomen"%} selected {% endif %} value="wonderwomen">Diana</option>
  <option {% if flask_option == "aquaman"%} selected {% endif %} value="aquaman">Arthur</option>
</select>

如果您使用 API 作为 select 选项, 让我们采取这样的 API 响应,

{'response': [
    {'value': 'superman', 'inner_text': 'Clark'},
    {'value': 'batman', 'inner_text': 'Bruce'},
    {'value': 'aquaman', 'inner_text': 'Arthur'},
    {'value': 'wonderwomen', 'inner_text': 'Diana'}
]}

您可以遍历 API 生成 select 标签,

<select>
  {% for value, text in varible_name.response %}
     <option {% if flask_option == value %} selected {% endif %} value = '{{value}}'> {{text}} </option>
  {% endfor %}
</select>

对于textarea,你可以使用

<textarea>{{reqest.form.get("txt")}}</textarea>

或javascript

$('textarea').text('{{reqest.form.get("txt")}}')