为什么我的烧瓶表单验证返回不是有效的选择?

2023-12-05

我一直试图找出为什么我的 Flask 表单无法正确验证我的选择字段选择,即使这些选择来自选择字段选项。

我的假设是,从服务器传回时的选择选项是 unicode,并且正在与作为字符串的选择进行比较,但是,我认为 coerce=str 可以解决这个问题。我打印出了表单数据和请求数据,这是下面的输出。为什么它不起作用?

我的代码附在下面,从输出字典中删除了 csrf 令牌密钥。这看起来是一件很简单的事情,但我却想不通。

forms.py

class PlatformForm(FlaskForm):
    platform_options = [('test', 'Test'), ('test2','Test2')]
    platforms = wtforms.SelectField('Platforms', choices=platform_options, coerce=str, validators=[DataRequired()])

views.py

@app.route('/', methods=['POST', 'GET'])
def index():
    form = forms.PlatformForm()
    if form.is_submitted():
        print form.data
        print request.form
    if form.errors:
        print form.errors
return render_template('home.html', form=form)

索引.html

   {% extends "base.html" %}
   {% block content %}
   <h4>Select a Platform</h4>
   <form method="POST">
       {{ form.csrf_token }}
       <select class="custom-select" name="platform">
       {% for value, text in form.platforms.choices %}<br>
           <option value="{{ value }}">{{ text }}</option>
       {% endfor %}
       </select>
<button id="submit_inputs" type="submit" class="btn btn-default">Submit</button>
    </form>
    {% endblock %}

output

   {'platforms': 'None'}
   ImmutableMultiDict([('platform', u'test')])
   {'platforms': [u'Not a valid choice']}

编辑: 我解决了这个问题。这就是我通过 HTML 和 Jinja 创建选择下拉列表的方式。当传递回 Python 时,迭代选择并创建选项标签似乎并没有实例化表单数据本身中的任何内容。将整个 for 循环更改为

{{form.platforms}}

创建了一个实际有效的选择下拉字段。


你的名字不匹配。在表单中,您命名了选择字段platforms(复数)。在 HTML 中,您使用platform(单数)。

我建议您不要手动渲染模板中的字段,而是让 WTForms 为您生成 HTML。对于表单标签,您可以使用{{ form.platforms.label }},对于实际领域{{ form.platforms() }}。您可以传递任何您想要字段作为关键字参数的属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的烧瓶表单验证返回不是有效的选择? 的相关文章

随机推荐

  • 在 Apache Camel 中动态加载路由的最佳方法

    我们开发了基于 Karaf 和 A pache Camel 的应用程序 虽然我们的应用程序完全基于包 OSGI 但我们还在启动时加载Camel上下文 及其 路由上下文 这意味着我们已经定义了一些静态路由 我的问题是 有没有一种方法可以在应用
  • 为什么 Json.NET 序列化会因 [Serialized] 和只读属性内的 lambda 而失败?

    根据这些发行说明 Json NET 现在支持 SerializedAttribute Json NET 现在可以检测具有 SerializedAttribute 的类型 并序列化该类型上的所有字段 公共字段和私有字段 并忽略这些属性 我有以
  • 如何使用 Selenium 设置隐藏输入的值?

    我已经看过了this但没有运气 我试过那个例子 它说undefined browserbot 我也尝试过简单的 browser navigate to http example com browser execute script hidd
  • Git 拉取时忽略文件

    我是 github 的新手 我正在开发一个应用程序 它有config php您必须输入数据库凭据的文件 在我的 github 存储库中 文件如下所示 但在网站上我有带有凭据的文件 In th
  • 如何在主项目中包含多个 Xcode 项目

    我最近问过使用多个 Xcode 项目的智慧分离项目组件 我决定在我的下一个项目中遵循这条路线 我尝试通过将另一个项目拖放到侧边栏来将其添加到主 Xcode 项目中 但是 当我 import 添加的项目中定义的任何类时 我被告知找不到这些类
  • JAVA 6x6 网格填色游戏

    大家好 我现在进入最后一部分 即文件读取 我尝试编写一个 fileReader 但似乎没有更改变量 rNum 的值 关于为什么以下陈述不会改变的任何想法 谢谢 public void readStartFile String fileNam
  • Android 4.0+ 与嵌入式设备的蓝牙连接错误:“权限被拒绝”

    我有以下设置 Android 设备使用 客户端 套接字连接到远程嵌入式设备 Android 应用程序使用以下代码片段连接到嵌入式设备 在嵌入式设备上使用MindTree BT堆栈 其中服务器串行套接字是根据设备中的一些属性准备的 这是And
  • 在 SAS 中将宽转为长,无需额外的列

    我想转置数据集 但 SAS 坚持添加新列 如果 by 列 有多个条目 所以如果我跑 data test input a b c datalines 1 aaa bbb 1 bbb bbb 2 ccc ccc 3 ccc ccc run pr
  • `fullVisitorId` => clientId,一对多映射?

    我的印象是fullVisitorId只是 clientId 的哈希值 两者之间应该存在一对一的映射 但在这里 我遇到的情况是很少有人fullVisitorId被映射到两个不同的client Id 我们正在将 GA 客户端 ID 收集到用户范
  • 超链接的路径仅为正斜杠 (/)

    我被要求对朋友的公司网站进行一些更改 它使用 PHP 插入文件作为每个页面的标题 这很有用 因为每个页面上的导航等都是相同的 以下代码指定每个页面上的公司徽标 div a href a div 如您所见 href of the a标签包含o
  • 如何在项目的 Scala 构建定义中定义包后面的目录结构?

    sbt 项目中有两个完整的构建定义文件 Build scala and Helpers scala 他们位于project folder 我想放Helpers模块到单独的子文件夹中project utils 当我做import utils
  • Pandas DataFrames 与 NaN 相等比较

    在对某些函数进行单元测试的背景下 我尝试使用 python pandas 建立 2 个 DataFrame 的相等性 ipdb gt expect 1 2 2012 01 01 00 00 00 00 00 NaN 3 2013 05 14
  • 是否可以使用 Inno Setup 接受自定义命令行参数

    我正在使用 Inno Setup 准备安装程序 但我想添加一个额外的自定义 没有可用参数 命令行参数 并希望获取参数的值 例如 setup exe do something 检查是否 do被给定 然后得到某物的价值 是否可以 我怎样才能做到
  • 有没有办法知道在什么情况下调用 Child Added ?特别是页面加载与其他事件

    这是我的场景 当通过浏览器事件页面加载后添加子项时 我想在标题中指出它 但在页面加载时 也会调用添加的子项 如何区分添加的初始子项与实际添加的新条目的子项 谢谢 蒂姆 Firebase 故意不区分 初始 数据和 新 数据 在大多数情况下 这
  • Newtonsoft.JSON序列化对象返回空JSON字符串[重复]

    这个问题在这里已经有答案了 每个人都经常被问到这个问题 我几乎尝试了所有方法 但没有一个对我有用 所以我正在 Xamarin Forms 中进行开发 并将我的数据发送到服务器 我有这门课 public class Customer publ
  • C++ 随机数每次都相同的序列

    我写这个是为了生成一个随机密码 include
  • NSStatusBar + Swift:标题显示并立即消失

    我想为 macOS 制作状态栏 但运行应用程序后标题显示并立即消失 func applicationDidFinishLaunching aNotification Notification Insert code here to init
  • 以编程方式与 IE 浏览器交互以填写表单和导航等

    我想使用 C 与 IE 浏览器交互 我感觉会涉及到shdocvw dll 但是里面的类太多了 我不知道从哪里开始 也许根本没有必要使用它 这里的目标是与网站交互 访问其页面并 预热 与如此处所述 by 肯尼斯 斯科特 问题是 当您与网站交互
  • 在 ADF 管道中将文件 blob 存储的访问层从热层更改为存档层

    我想使用 ADF 管道将文件从一个容器复制到另一个容器 在复制时我必须将访问层从热层更改为存档层 我必须使用 ADF 管道来实现这一点 帮助我找到一种不使用自定义活动的方法会很棒 我没有在任何活动中看到实现此目的的直接属性 您可以尝试下面的
  • 为什么我的烧瓶表单验证返回不是有效的选择?

    我一直试图找出为什么我的 Flask 表单无法正确验证我的选择字段选择 即使这些选择来自选择字段选项 我的假设是 从服务器传回时的选择选项是 unicode 并且正在与作为字符串的选择进行比较 但是 我认为 coerce str 可以解决这