Flask AttributeError:“HTMLString”对象没有属性“__call__”

2024-03-16

我创建了一个宏来处理表单错误,如下所示:

    {% macro render_field_with_errors(field) %}
       <p> 
          {{ field.label }} {{ field(**kwargs)|safe }}
          {% if field.errors %}
             <ul>
                  {% for error in field.errors %}
                     <li style="color: red;">{{ error }}</li>
                  {% endfor %}
            </ul>
          {% endif %}
       </p>
    {% endmacro %}

{% macro render_field(field) %}
   <p>{{ field(**kwargs)|safe }}</p>
{% endmacro %}

我的forms.py如下:

from flask.ext.wtf import Form, TextField, BooleanField, PasswordField, RadioField, SelectMultipleField
from flask.ext.wtf import Required

class LoginForm(Form):
    username = TextField('email', validators = [Required()])
    password = PasswordField('password', validators=[Required()])
    remember_me = BooleanField('remember_me', default = False)

我的登录表单如下:

<!-- Login form -->
{% from "includes/_formhelpers.html" import render_field_with_errors %}
<form method="POST" action="/login" focus="first">
        <div class="span5">
                {{ login_form.hidden_tag() }}
                {{ render_field_with_errors(login_form.username(placeholder="Username / Email", class="span10")) }}
                <br>
                 {{ render_field_with_errors(login_form.password(placeholder="Password", class="span10")) }}
                 <br>
                 <div class="qp-log">
                     {{ render_field_with_errors(login_form.remember_me(class="qp-login", value="remember_me")) }} Remember Me
                     <br>
                     <button type="submit" class="btn qp-btn" style="height:30px;width:56px;">Login</button>
                     <button type="Reset" class="btn">Clear</button>
                 </div>
                 <div class="qp-pass">
                     Forgot Password? <a href ="#">click here</a>
                 </div>
        </div>
<div class="span2">
              <br>
              <br>
              <br> &nbsp;
              <img src="{{ url_for('static', filename='img/or_icon.gif') }}">
        </div>
        <div class="span5">
            <center>
                <br>
                <button class="btn btn-facebook">
                        <small>Connect with</small>
                        <big>  Facebook </big>
                </button>
                <h4> or </h4>
                <button type="Submit" class="btn qp-btn">
                        <a href="signup.html" style="color:white;">Sign Up for Free</a>
                </button>
            </center>
       </div>
</form>
<!-- Form End -->

我收到以下错误:

Traceback (most recent call last):
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1360, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1358, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/app.py", line 1344, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/rahul/git/webapp/webapp/routes.py", line 14, in index
    return render_template("public/index.html", login_form=login_form)#, registration_form=registration_form)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/templating.py", line 125, in render_template
    context, ctx.app)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/flask/templating.py", line 107, in _render
    rv = template.render(context)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/jinja2/environment.py", line 969, in render
    return self.environment.handle_exception(exc_info, True)
  File "/home/rahul/git/webapp/venv/lib/python2.7/site-packages/jinja2/environment.py", line 742, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/rahul/git/webapp/webapp/templates/public/index.html", line 1, in top-level template code
    {% extends "public/base.html" %}
  File "/home/rahul/git/webapp/webapp/templates/public/base.html", line 1, in top-level template code
    {% extends 'layout.html' %}
  File "/home/rahul/git/webapp/webapp/templates/layout.html", line 35, in top-level template code
    {% block content %}{% endblock %}
  File "/home/rahul/git/webapp/webapp/templates/public/index.html", line 4, in block "content"
    {% include 'public/login.html' %}
  File "/home/rahul/git/webapp/webapp/templates/public/login.html", line 6, in top-level template code
    {{ render_field_with_errors(login_form.username(placeholder="Username / Email", class="span10")) }}
  File "/home/rahul/git/webapp/webapp/templates/includes/_formhelpers.html", line 3, in template
    {{ field.label }} {{ field(**kwargs)|safe }}
AttributeError: 'HTMLString' object has no attribute '__call__'

我没有明白代码有什么问题吗?如果我从 html 中删除宏 文件并包含 for 循环以 html 形式进行错误处理,它工作完美。什么 我认为是,元素中包含的占位符和类导致 错误,但不知道为什么?


我最近遇到了类似的问题,我相信问题出在 login.html 中的这种模式

 {{ render_field_with_errors(login_form.password(placeholder="Password", class="span10")) }}

您将占位符和类传递给登录表单,此时它只是 wtf 生成的一段 html。如果我在我的烧瓶版本中尝试这个,即使代码的其余部分不同,我也会得到完全相同的错误。如果我在助手中传递占位符和类,错误就会消失:

{{ field(class="span10",placeholder="Password",**kwargs)|safe }}

如果您无法在助手中传递通用占位符和类,您始终可以在模板中指定它们

<div class=span10> {{render_field_with_errors(loginForm.password) }} </div>

更新: 其实我又查了一下,你也可以这样做:

{{ render_field_with_errors(login_form.password,placeholder="Password", class="span10") }}

这是有道理的 - 您将关键字参数传递给字段。您没有向它传递一个带有参数的函数,它无法处理它,而只是传递几个关键字参数。希望这可以帮助。

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

Flask AttributeError:“HTMLString”对象没有属性“__call__” 的相关文章

  • 根据随机选择的列生成随机天数

    我有一个如下所示的数据框 感谢 SO 社区在以下方面提供的帮助 df1 pd DataFrame person id 11 11 12 13 14 date birth 01 01 1961 12 30 1961 05 29 1967 01
  • 如何查找分布式dask中任务失败的原因?

    我正在开发一个分布式计算系统dask distributed 我通过以下方式提交给它的任务Executor map功能有时会失败 而其他看起来相同的功能却可以成功运行 该框架是否提供了诊断问题的方法 update我所说的失败是指增加 Bok
  • Python3+Kivy+Plyer 推送通知图标问题

    我在使用 Android 的简单通知测试应用程序时遇到了一个奇怪的错误 错误 python AttributeError type object notification org notificator R drawable has no
  • OpenCV 错误:使用 COLOR_BGR2GRAY 函数时断言失败

    我在使用 opencv 时遇到了一个奇怪的问题 我在 jupyter 笔记本中工作时没有任何问题 但在尝试运行此 Sublime 时却出现问题 错误是 OpenCV错误 cvtColor中断言失败 深度 CV 8U 深度 CV 16U 深度
  • 如何在groupby之后将pandas数据框拆分为许多列

    我希望能够在 pandas 中使用 groupby 按列对数据进行分组 然后将其拆分 以便每个组都是数据框中自己的列 e g time data 0 1 2 0 1 2 3 0 2 3 4 0 3 1 2 1 4 2 3 1 5 3 4 1
  • 蟒蛇 |如何将元素随机添加到列表中

    有没有一种方法可以将元素随机添加到列表中 内置函数 ex def random append lst a lst append b lst append c lst append d lst append e return print ls
  • 返回不包括指定键的字典副本

    我想创建一个函数 返回字典的副本 不包括列表中指定的键 考虑这本词典 my dict keyA 1 keyB 2 keyC 3 致电without keys my dict keyB keyC 应该返回 keyA 1 我想用一行简洁的字典理
  • 为 PyCharm 中的所有配置设置相同的环境变量

    我有一个与 Celery 和很多不同的工作人员一起的项目 如何避免每次将 PyCharm 中的环境变量复制粘贴到每个运行 调试配置 有什么方法可以在项目设置中设置它们吗 找到解决方案here https stackoverflow com
  • multiprocessing.freeze_support()

    为什么多处理模块需要调用特定的function http docs python org dev library multiprocessing html multiprocessing freeze support在被 冻结 以生成 Wi
  • 如何在 openpyxl 中设置或更改表格的默认高度

    我想通过openpyxl更改表格高度 并且我希望首先默认一个更大的高度值 然后我可以设置自动换行以使我的表格更漂亮 但我不知道如何更改默认高度 唯一的到目前为止 我知道更改表格高度的方法是设置 row dimension idx heigh
  • pandas 两个数据框交叉连接[重复]

    这个问题在这里已经有答案了 我找不到有关交叉联接的任何内容 包括合并 联接或其他一些内容 我需要使用 my function 作为 myfunc 处理两个数据帧 相当于 for itemA in df1 iterrows for itemB
  • 在python中调用subprocess.Popen时“系统找不到指定的文件”

    我正在尝试使用svnmerge py合并一些文件 它在底层使用 python 当我使用它时 我收到一个错误 系统找不到指定的文件 工作中的同事正在运行相同版本的svnmerge py 以及 python 2 5 2 特别是 r252 609
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • 如何将同步函数包装在异步协程中?

    我在用着aiohttp https github com aio libs aiohttp构建一个 API 服务器 将 TCP 请求发送到单独的服务器 发送 TCP 请求的模块是同步的 对于我来说是一个黑匣子 所以我的问题是这些请求阻塞了整
  • Python time.sleep - 永不醒来

    我认为这将是那些简单的问题之一 但它让我感到困惑 停止媒体 我是对的 找到了解决方案 查看答案 我正在使用 Python 的单元测试框架来测试多线程应用程序 很好而且很直接 我有 5 个左右的工作线程监视一个公共队列 以及一个为它们制作工作
  • Scikit Learn - K-Means - 肘部 - 标准

    今天我想学习一些关于 K means 的知识 我已经了解该算法并且知道它是如何工作的 现在我正在寻找正确的 k 我发现肘部准则作为检测正确的 k 的方法 但我不明白如何将它与 scikit learn 一起使用 在 scikit learn
  • Python列表对象属性“append”是只读的

    正如标题所说 在Python中 我试图做到这一点 以便当有人输入一个选择 在本例中为Choice13 时 它会从密码列表中删除旧密码并添加新密码 passwords mrjoebblock mrjoefblock mrjoegblock m
  • Melt() 函数复制数据集

    我有一个这样的表 id name doggo floofer puppo pupper 1 rowa NaN NaN NaN NaN 2 ray NaN NaN NaN NaN 3 emma NaN NaN NaN pupper 4 sop
  • 使用Python重命名目录中的多个文件

    我正在尝试使用以下 Python 脚本重命名目录中的多个文件 import os path Users myName Desktop directory files os listdir path i 1 for file in files
  • 如何将 Pandas Dataframe 中的字符串转换为字符列表或数组?

    我有一个名为的数据框data 其中一列包含字符串 我想从字符串中提取字符 因为我的目标是对它们进行一次性编码并使之可用于分类 包含字符串的列存储在预测因子如下 predictors pd DataFrame data columns Seq

随机推荐

  • Java 配置构建路径或 WEB-INF/lib 文件夹[重复]

    这个问题在这里已经有答案了 我见过很多教程和应用程序将其 jar 放在构建路径中 而其他教程和应用程序将其放在 web inf lib 文件夹中 有什么显着差异吗 两者有何优缺点 我将某个 jar 放入 libs 文件夹中并将该 jar 放
  • ajax请求struts 2中的操作不返回任何视图

    我有一个用于区域设置选择的下拉列表 当用户更改它时 我将 ajax 请求发送到设置会话边界的操作 现在的问题是我应该从操作的execute 方法返回什么 您可以返回 HTTP 200 OK 这应该是一个空的成功响应
  • Unity:将网格物体轻轻包裹在其他网格物体周围?

    给定一个网格 如左侧的立方体对象 和另一个自定义的球状网格 右侧 如果更容易的话 它可以是另一种形状 Unity 和 C 中的一个在运行时如何将第二个网格轻轻包裹在第一个网格周围 谢谢 下面的方法 借助 VirtualMethodStudi
  • Windows 上的 Spark-shell 错误 - 如果不使用 hadoop 可以忽略它吗?

    启动spark shell时出现以下错误 我将使用 Spark 处理 SQL Server 中的数据 我可以忽略这些错误吗 java io IOException 无法在 Hadoop 二进制文件中找到可执行文件 null bin winu
  • 为什么运行 StAX Parser 时出现 NullPointerException?

    我正在尝试用 Java 编写 StAX XML 解析器 但总是出现 NullPointerException 错误 请帮我解决这个问题 完整问题 线程 main 中的异常 java lang NullPointerException org
  • 相当于 jQuery 的 $(window).width 的原始 JavaScript 是什么?

    我听说这是偏移宽度 https stackoverflow com questions 833699 clientheight clientwidth returning different values on different brow
  • 在 Laravel 的 FormRequest 中使用复杂的条件验证规则

    我正在使用 Laravel 开发一个 Web 应用程序 我现在正在做的是创建一个 FirmRequest 来进行验证 这是我的表格请求 use Illuminate Foundation Http FormRequest class Sto
  • VS 2019 SSIS包无法添加SQL Server

    我安装了 Visual Studio 2019 和 SSIS 包扩展并创建了一个新项目 我可以毫无问题地将我的 SQL Server 添加为连接管理器 但是当我拖动Data Flow Task到包中并拖动Source Assistant对此
  • MEF 与 Mono.AddIn

    我正在开发一个 NET 3 5 C 桌面应用程序 它应该可以通过插件进行扩展 是否有任何文章等讨论 MEF 和 Mono AddIn 之间的差异来帮助我做出明智的决定 或者更好的是您有这两个框架的经验并且可以对它们发表评论吗 谢谢 帕特里克
  • geopy.exc.GeocoderInsufficientPrivileges:HTTP 错误 403:禁止

    我尝试使用 geopy 获取纬度 经度 但它会抛出 http 403 禁止错误 from geopy geocoders import Nominatim geolocator Nominatim addr 350 5th Ave New
  • 反应事件目标父节点

    是否可以获取虚拟 DOM 上事件目标的父节点 在我的基本 React 组件中 我有一个从 onClick 事件触发的方法 我想获取父虚拟 DOM 节点属性 handleClick e The following code only give
  • 用浮点数初始化 NSArray?

    这是用浮点对象初始化 NSArray 的有效方法吗 NSArray fatArray NSArray arrayWithObjects NSNumber numberWithFloat 6 9 NSNumber numberWithFloa
  • Ruby on Rails:有哪些可用的报告和/或图表工具? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚开始使用 Ruby Rails 想知道 Rails 开发人员使用什么在 Rails 站点上提供报告
  • 结束对话 C# 机器人

    我正在用 C 构建一个聊天机器人 我希望在一些消息之后对话停止 但我不知道该怎么做 我已经设置了消息限制 并且我希望在达到此限制后不能再发送消息 有我的代码 private int NombreDeMessages protected ov
  • 是否有通用 I2C 命令来查看设备是否仍然存在于总线上?

    是否有通用的 I2C 命令来查看设备在初始化一次后是否仍然存在于总线上 例如 OLED 显示器 我问这个的原因是为了避免主程序由于库代码中存在无限循环而冻结 当设备断开连接时 例如 Wire 库 在 MCU 启动时 我想检查设备是否可用 并
  • python3请求使用quote而不是quote_plus

    我使用 Python 3 和requests http docs python requests org en master 用于查询 REST 服务的模块 库 看来请求默认使用urllib parse quote plus 对于 urle
  • 在后台接收蓝牙管理器通知

    我在我的应用程序中使用BluetoothManager私有框架 我想知道当应用程序处于后台时如何接收BluetoothManager通知 例如 在后台接收连接 断开连接的蓝牙通知 提前致谢 Use global notification e
  • 在 GridView 中通过分页维护排序

    我目前正在尝试编写代码 以便在更改 GridView 上的页面时保持排序首选项 我当前的代码运行良好 可以根据用户的排序选择对数据进行排序 但是当换页时 排序不起作用 我没有收到错误 而是收到未排序的结果 这是我的 aspx 代码
  • 如何使用sequelize 与postgres 进行日期比较

    我想删除日期在 20 分钟之前的所有记录 Postgres 或 Sequelize 对裸露的 javascript 不满意Date我提供的对象作为比较值 我在 postgres 9 6 数据库之上使用sequelize 4 37 有问题的列
  • Flask AttributeError:“HTMLString”对象没有属性“__call__”

    我创建了一个宏来处理表单错误 如下所示 macro render field with errors field p field label field kwargs safe if field errors p ul for error