本文适用于Flask + Layui + HTML + JS 的场景,其他场景不保证完全适用。
本文是关于Flask下控件回显问题的解决方案,包括xm-select单选框的回显问题
控件回显问题
在Flask中调用render_template
的时候页面会进行刷新,此时页面的From
之类需要输入的控件在刷新后就会显示空白内容,因为刷新等于重新加载一次页面,虽然获取了输入的值,但是并没有保留在原本的控件 value 中。
解决显式控件回显问题方法
本文所谓的显式控件是,控件的元素都是在HTML或JS中直接定义的,此事我们只需要找到控件所在的位置,给元素进行赋值,例如:
app.py
1 | from flask import Flask, render_template |
index.html
1 |
|
我们这里是将从表单中获取的name值,再次赋值给name,也就是回显。
其实也就是利用 Flask的{{ }}
进行传参,只不过这里是将参数传给value
而已,与之前获取参数一节不过是举一反三。
解决隐式控件回显问题方法
在写小程序的时候,使用了layui框架的扩展插件xm-select
,该插件主要是设计了好看的选择控件,例如单选多选等等,之后再开章节细讲。
本人的调用的xm-select控件部分代码如下。
index.html
1 | <form class="layui-form layui-form-pane" style="font-family: 微软雅黑" method="POST"> |
运行结果如下:

但是在提交表单之后,界面进行刷新,页面中选择的参数就会消失,此时我们去寻找对应的控件,就傻眼了。

我们只能在①处找到自己写的代码,而下拉框②这些都是动态生成的,对于我这个前端新手来说还是很厉害的,所以,我去查找说明文档,事实证明说明文档是很重要的。
从中我们得知,在进行xmSelect.render()
后会返回一个xmSelect
对象,也就是我们的下拉框对象,使用getValue
可以获取下拉框的当前值,使用setValue
可以设置下拉框的当前值,也就我们所需要的回显,调用格式如下:
1 | sites_select.setValue([ |
这样就成功完成了控件的回显。
// Todo: 还有一个多选的回显,还为解决。
个人收获
- 学会举一反三,Flask传过来的值在HTML的任何一个位置都可以运用;
- 当控件是动态显示的时候,一定会存在赋值取值的函数入口,查找说明文档是最快的方法。