`

解决在flask的wtform中设置hidden属性的组件无法取得值

 
阅读更多

有这样一个需求,用表单填写文件的大小,这个大小不仅有数字而且有单位,比如: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 PDF中文文档

    * 了解安全注意事项和Flask中的Unicode * 了解Flask扩展开发的方法和注意事项 * 使用Pocoo风格指南和Upgrading to Newer Releases 十、总结和致谢 * 对Flask中文文档的总结和致谢 * 感谢知识的创造者、分享者和...

    Flask v2.0 中文文档

    静态文件如 CSS、JavaScript 和图片通常存放在 `static` 文件夹中,Flask 自动处理这些文件的服务器请求。 **测试与覆盖** Flask 提供了测试支持,可以通过 Flask 测试客户端模拟 HTTP 请求,进行单元测试和功能...

    【已解决】利用nohup使得Python Flask项目在Ubuntu系统上后台运行

    一、问题: 今天在部署Python Flask项目到线上的时候,在虚拟环境中,运行项目可以正常访问到api,但是在Xshell中,一旦Ctrl+C或者关闭ssh,他就停止了,api再也请求不到了 二、nohup 1、nohup 是 no hang up 的缩写...

    flask_sqlachemy连接db2,插入中文乱码,问题解决

    然而,在实际开发过程中,特别是在使用Flask-SQLAlchemy连接IBM DB2数据库时,可能会遇到中文字符存储时出现乱码的问题。本文将详细介绍该问题的原因及两种解决方案。 #### 二、问题原因分析 ##### 1. 字符集配置...

    Python的Flask框架与数据库连接的教程

    在实际开发中,数据库是保存和管理数据的重要组件,因此掌握Flask与数据库的交互对于开发Web应用至关重要。 首先,介绍了如何通过命令行执行Python脚本。在Linux或OSX系统中,需要使用`chmod a+x script.py`命令...

    flask的必要组件之一werkzeug-maser

    5. **调试器**:Werkzeug 包含了一个集成的调试器,可以在开发过程中帮助开发者快速定位和解决问题。 6. **测试客户端**:提供了一个测试客户端,允许开发者在不启动服务器的情况下对 Flask 应用进行单元测试和功能...

    Flask官方文档中文版

    开发者在使用Flask时,并不一定要将所有的Web应用程序代码都塞入一个Python文件中,实际上,Flask非常鼓励你根据需要将应用模块化和组件化。尽管Flask核心中没有预设数据库抽象层、表单验证等组件,但你可以通过扩展...

    flask-wtform-tutorial::memo::smiling_face_with_sunglasses:在Flask应用中实现表单的教程

    : 入门在本地设置:安装使用make deploy启动并运行: $ git clone https://github.com/hackersandslackers/flask-wtform-tutorial.git$ cd flask-wtform-tutorial$ make deploy环境变量用您的值替换.env.example中的...

    Flask框架WTForm表单用法示例

    wtform能够通过一个类定义一些字段,这些字段会在前端生成标签,并且通过设置字段的验证规则,自动判断前端输入数据的格式。 一般用于用户登录,用户注册等信息录入。 示例: from wtforms import Form from flask ...

    flask session组件的使用示例

    在Python的Web开发框架Flask中,Session是一个关键的组件,用于在用户的多次请求之间保持状态。本篇文章将深入探讨Flask内置的Session组件以及第三方的`flask-session`组件的使用方法和处理机制。 一、Flask 内置 ...

    Python web框架.Flask中文手册.pdf

    "micro"在这里指的是Flask设计哲学中的微框架概念,它意味着Flask旨在保持核心简单而易于扩展。 - 提到一个框架和一个例子,可能是在说明Flask如何通过一个简单的例子来展示其功能和工作原理。 - 讨论了Web开发...

    Python Flask Web开发入门之Bootstrap介绍使用和Flask-Nav快速导航栏 共10页.pdf

    在使用 Bootstrap 和 Flask-Nav 时,需要在模板中使用正确的语法来渲染组件,例如使用 {{ bootstrap.fluid_container() }} 语句来渲染一个响应式的容器。使用正确的语法可以确保组件正确渲染。 在使用 Bootstrap 和...

    Flask中文文档

    **Flask** 是一个轻量级的 **Python Web框架**,它以其简洁、灵活的特性在开发者社区中受到广泛欢迎。这个文档集是Flask的中文版本,旨在帮助中文用户更好地理解和使用Flask来构建Web应用程序。 Flask的核心概念是*...

    Python的Flask框架中实现分页功能的教程

    在Python的Flask框架中,实现分页功能是提高用户体验和网站性能的重要一环,特别是在处理大量数据的博客、论坛等应用中。本教程将指导你如何在Flask中为博客实现分页功能。我们将基于一个简单的博客应用来进行说明。...

    Python离线安装Flask

    在Python的开发环境中,有时我们可能需要在没有网络的情况下安装Flask框架,这通常发生在内网环境或者设备连接限制的场景。"Python离线安装Flask"的主题就是要解决这种问题。Flask是一款轻量级的Web服务程序,适用于...

    python-flask-microservice_Flask框架_flask_phyton_

    在Flask应用中,可以通过引入EasyUI的静态资源,并在模板中使用其组件,实现交互式的用户界面。例如,可以创建一个表格展示数据,或者使用对话框进行用户确认操作。 总结,"python-flask-microservice"项目展示了...

    yolov5在flask部署网页支持在线上传预测图片与视频功能以及摄像头检测功能

    在本项目中,我们主要探讨如何使用YOLOv5模型在Flask框架下构建一个功能丰富的Web应用。这个应用能够支持用户在线上传图片和视频,然后利用YOLOv5进行对象检测,并将结果实时显示。此外,应用还包含了摄像头检测功能...

    解决flask接口返回的内容中文乱码的问题

    为了解决这个问题,我们需要在Flask应用的配置中设置`JSON_AS_ASCII`选项。在应用启动前,将其设置为`False`,这样Flask在序列化JSON时会保留非ASCII字符,例如中文字符。修改后的启动代码如下: ```python if __...

    Flask+Web开发实战,flaskweb开发实战pdf,Python

    Flask,作为一个轻量级的Python Web框架,自2010年开源以来,已经在开发者社区中积累了极高的声誉。与Django这样的全功能框架相比,Flask以其灵活性、简单性和可扩展性赢得了众多Python爱好者的青睐。在本文中,我们...

Global site tag (gtag.js) - Google Analytics