有这样一个需求,用表单填写文件的大小,这个大小不仅有数字而且有单位,比如:12B/KB/MB。那么考虑设计前段页面展示一个填写数字的input,同时再来一个复选单位的框。
利用bootstrap的样式表单,代码如下:
<div class="input-group"> {{ form.size(class="form-control", placeholder="整数或小数") }} <div class="input-group-btn bs-dropdown-to-select-group"> <button type="button" class="btn btn-default dropdown-toggle as-is bs-dropdown-to-select" data-toggle="dropdown"> <span data-bind="bs-drp-sel-label">KB</span> {{ form.unit(value="KB", **{'data-bind':'bs-drp-sel-value'}) }} <span class="caret"/> </button> <ul class="dropdown-menu" role="menu" style=""> <li data-value="B"><a href="#">B</a></li> <li data-value="KB"><a href="#">KB</a></li> <li data-value="MB"><a href="#">MB</a></li> </ul> </div> </div>
需要使用js控制一下这个dropdown-menu的内容给到unit中:
$(document).ready(function(e){ $( document ).on( 'click', '.bs-dropdown-to-select-group .dropdown-menu li', function( event ) { var $target = $( event.currentTarget ); $target.closest('.bs-dropdown-to-select-group') .find('[data-bind="bs-drp-sel-value"]').val($target.attr('data-value')) .end() .children('.dropdown-toggle').dropdown('toggle'); $target.closest('.bs-dropdown-to-select-group') .find('[data-bind="bs-drp-sel-label"]').text($target.context.textContent); return false; }); });
同时需要在form.py文件中,添加这两个组件:
size = FloatField(u'大小', filters=[lambda x: x or None]) unit = HiddenField(u'单位', filters=[lambda x: x or None])
但是当我们运行的时候发现这个form.unit.data的内容取不到,是一个u'',空的字符串。
而把HiddenField换成StringField后就有值。在StringFiled中添加widget=HiddenInput()也不好使。
该怎么办呢?
搜遍了网络,有的说这是flask的一个bug,有的说和csrfform有关。但是用他们的思路,统统在我这里不好使。就在我快放弃的时候,突然想到:我为啥就一定要用hidden来隐藏一个组件呢?display:none行不行?
试了一下,竟然行。。。好吧,问题解决了。至于之前那个为什么我也没研究出来,谁了解可以给我留言。
解决后的代码如下(只罗列了一下和上面有差别的地方)
{{ form.unit(value="KB", style="display:none;",**{'data-bind':'bs-drp-sel-value'}) }}
size = FloatField(u'大小', filters=[lambda x: x or None]) unit = StringField(u'单位', filters=[lambda x: x or None])
相关推荐
* 了解安全注意事项和Flask中的Unicode * 了解Flask扩展开发的方法和注意事项 * 使用Pocoo风格指南和Upgrading to Newer Releases 十、总结和致谢 * 对Flask中文文档的总结和致谢 * 感谢知识的创造者、分享者和...
静态文件如 CSS、JavaScript 和图片通常存放在 `static` 文件夹中,Flask 自动处理这些文件的服务器请求。 **测试与覆盖** Flask 提供了测试支持,可以通过 Flask 测试客户端模拟 HTTP 请求,进行单元测试和功能...
一、问题: 今天在部署Python Flask项目到线上的时候,在虚拟环境中,运行项目可以正常访问到api,但是在Xshell中,一旦Ctrl+C或者关闭ssh,他就停止了,api再也请求不到了 二、nohup 1、nohup 是 no hang up 的缩写...
然而,在实际开发过程中,特别是在使用Flask-SQLAlchemy连接IBM DB2数据库时,可能会遇到中文字符存储时出现乱码的问题。本文将详细介绍该问题的原因及两种解决方案。 #### 二、问题原因分析 ##### 1. 字符集配置...
在实际开发中,数据库是保存和管理数据的重要组件,因此掌握Flask与数据库的交互对于开发Web应用至关重要。 首先,介绍了如何通过命令行执行Python脚本。在Linux或OSX系统中,需要使用`chmod a+x script.py`命令...
5. **调试器**:Werkzeug 包含了一个集成的调试器,可以在开发过程中帮助开发者快速定位和解决问题。 6. **测试客户端**:提供了一个测试客户端,允许开发者在不启动服务器的情况下对 Flask 应用进行单元测试和功能...
开发者在使用Flask时,并不一定要将所有的Web应用程序代码都塞入一个Python文件中,实际上,Flask非常鼓励你根据需要将应用模块化和组件化。尽管Flask核心中没有预设数据库抽象层、表单验证等组件,但你可以通过扩展...
: 入门在本地设置:安装使用make deploy启动并运行: $ git clone https://github.com/hackersandslackers/flask-wtform-tutorial.git$ cd flask-wtform-tutorial$ make deploy环境变量用您的值替换.env.example中的...
wtform能够通过一个类定义一些字段,这些字段会在前端生成标签,并且通过设置字段的验证规则,自动判断前端输入数据的格式。 一般用于用户登录,用户注册等信息录入。 示例: from wtforms import Form from flask ...
在Python的Web开发框架Flask中,Session是一个关键的组件,用于在用户的多次请求之间保持状态。本篇文章将深入探讨Flask内置的Session组件以及第三方的`flask-session`组件的使用方法和处理机制。 一、Flask 内置 ...
"micro"在这里指的是Flask设计哲学中的微框架概念,它意味着Flask旨在保持核心简单而易于扩展。 - 提到一个框架和一个例子,可能是在说明Flask如何通过一个简单的例子来展示其功能和工作原理。 - 讨论了Web开发...
在使用 Bootstrap 和 Flask-Nav 时,需要在模板中使用正确的语法来渲染组件,例如使用 {{ bootstrap.fluid_container() }} 语句来渲染一个响应式的容器。使用正确的语法可以确保组件正确渲染。 在使用 Bootstrap 和...
**Flask** 是一个轻量级的 **Python Web框架**,它以其简洁、灵活的特性在开发者社区中受到广泛欢迎。这个文档集是Flask的中文版本,旨在帮助中文用户更好地理解和使用Flask来构建Web应用程序。 Flask的核心概念是*...
在Python的Flask框架中,实现分页功能是提高用户体验和网站性能的重要一环,特别是在处理大量数据的博客、论坛等应用中。本教程将指导你如何在Flask中为博客实现分页功能。我们将基于一个简单的博客应用来进行说明。...
在Python的开发环境中,有时我们可能需要在没有网络的情况下安装Flask框架,这通常发生在内网环境或者设备连接限制的场景。"Python离线安装Flask"的主题就是要解决这种问题。Flask是一款轻量级的Web服务程序,适用于...
在Flask应用中,可以通过引入EasyUI的静态资源,并在模板中使用其组件,实现交互式的用户界面。例如,可以创建一个表格展示数据,或者使用对话框进行用户确认操作。 总结,"python-flask-microservice"项目展示了...
在本项目中,我们主要探讨如何使用YOLOv5模型在Flask框架下构建一个功能丰富的Web应用。这个应用能够支持用户在线上传图片和视频,然后利用YOLOv5进行对象检测,并将结果实时显示。此外,应用还包含了摄像头检测功能...
为了解决这个问题,我们需要在Flask应用的配置中设置`JSON_AS_ASCII`选项。在应用启动前,将其设置为`False`,这样Flask在序列化JSON时会保留非ASCII字符,例如中文字符。修改后的启动代码如下: ```python if __...
Flask,作为一个轻量级的Python Web框架,自2010年开源以来,已经在开发者社区中积累了极高的声誉。与Django这样的全功能框架相比,Flask以其灵活性、简单性和可扩展性赢得了众多Python爱好者的青睐。在本文中,我们...