Flask和Flask-admin的页面部分用到了bootstrap。开源软件的最大天坑就是版本问题,另外一个就是测试问题。

一个开源软件大多引入了多个其他开源库,少则几个,多则几十上百个。如果软件版本不兼容就会出现各种奇怪的问题,解决这个问题的方法一般是不更新开源库,一直用相同版本开发,实际安装应用时采用虚拟环境或者库本地化方法,具体可以参考我们之前的文章。

测试问题是指大多数开源软件都没有经过严格的测试,一般处于“大问题没多少,小问题没完没了”的状态。当然有一些开源项目经过严格测试,如centos,progresql之类。一般经过严格测试的软件非常稳定,但版本更新相对会慢很多。

我们在德数WMS开源项目

​德数WMS: 德数WMS,A Flask-based web framework wms, a opensource wms, a great wms. 德数WMS,是一个可商用的开源仓库管理系统(WMS)平台,用户可以在Web前端进行查看、增加、删除数据操作,python后端自动完成相应的数据库操作。 (gitee.com)​

开发中,意外出现了一个bug。真的很意外,之前都是好好的。如下图,Active对应的是一个checkbox,

Flask开发中遇到bootstrap的bug_开源项目

不知道出问题那天发了什么,然后就变成了:

Flask开发中遇到bootstrap的bug_bootstrap_02

Active应该还是checkbox,点击还是能改属性,但显示的不正确。

问题出现在年前几天,找了很久也没有找到问题的解决方法。但是我们定位到了出错的位置在flask-admin中的lib.html文件Forms块。

年后突然来了灵感,我们把bootstrap5的参数写进了bootstrap3的代码中,问题就解决了。不知道为什么,反正就变回去了。

Flask开发中遇到bootstrap的bug_bootstrap_03

form-control参数改成form-control-sm或form-control-lg都会显示正确的checkbox.