Flask-WTF - validate_on_submit() 永远不会执行

2024-04-15

我正在使用 Flask-WTF:

这是我的表格:

from flask.ext.wtf import Form, TextField

class BookNewForm(Form):
    name = TextField('Name')

这是控制器:

@book.route('/book/new', methods=['GET', 'POST'])
def customers_new():
    form = BookNewForm()
    if form.is_submitted():
        print "submitted"
    if form.validate():
        print "valid"
    if form.validate_on_submit():
        flash("Successfully created a new book")
        return redirect(url_for('.books_show'))
    return render_template('views/books_new.html', form=form)

现在的问题是,如果您查看我的打印语句,它总是打印已提交,但它从不打印 valid 并且 validate_on_submit() 从未执行。为什么?


您没有在 HTML 表单中插入 CSRF 字段。

<form method=post>
    {{ form.csrf_token }}
    {{ form.name }}
    <input type=submit>
</form>

添加后form.csrf_token到模板(docs http://flask-wtf.readthedocs.io/en/latest/quickstart.html#creating-forms),表单将按预期进行验证。

Add print(form.errors)验证表单后查看出现的错误。errors验证前将为空。在这种情况下,会出现缺失的错误

@book.route('/book/new_no_csrf', methods=['GET', 'POST'])
def customers_new_no_csrf():
    form = BookNewForm()
    print(form.errors)

    if form.is_submitted():
        print("submitted")

    if form.validate():
        print("valid")

    print(form.errors)

    if form.validate_on_submit():
        flash("Successfully created a new book")
        return redirect(url_for('.books_show'))

    return render_template('books_new.html', form=form)
{}
submitted
{'csrf_token': [u'CSRF token missing']}
127.0.0.1 - - [29/May/2012 02:01:08] "POST /book/new_no_csrf HTTP/1.1" 200 -
127.0.0.1 - - [29/May/2012 02:01:08] "GET /favicon.ico HTTP/1.1" 404 -

我在 GitHub 上创建了一个示例。 https://github.com/ajford/Flask-wtf-SO-Question-10722968

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

Flask-WTF - validate_on_submit() 永远不会执行 的相关文章

随机推荐

  • 什么时候适合响应 HTTP 412 错误?

    我不清楚什么时候应该或不应该返回 HTTP 412 先决条件失败 Web 服务错误 我正在考虑在验证数据时使用它 例如 如果客户端 POST 的 XML 数据并且该数据缺少必需的数据元素 则以 412 和错误描述进行响应 这是否符合 HTT
  • UIImage 到 base64 字符串编码

    如何转换UIimage到base64编码的字符串 我找不到任何详细的示例或代码 我想知道你为什么没有找到你的问题 因为这是一个非常古老的问题并且可以找到here https stackoverflow com questions 39246
  • 具有自定义 PropertyDescriptor 的 PropertyGrid

    我一直在努力让自定义属性描述符按照我想要的方式使用 PropertyGrid 工作 前提 我有一个名为 Animal 的类 其中包含以下属性Age Type Location and Name 我有另一个名为 AnimalGroup 的类
  • 如何查询C++的GCC警告?

    GCC 允许使用以下语法查询特定于 C 语言的可用警告标志 g Q help warning c 向调用中添加警告标志会将它们包含在结果中 g Wall Q help warning c 然而 似乎调用是从 C 的角度完成的 我不知道如何从
  • 我无法导入textblob包

    我使用命令安装了textblobpip install 但现在我尝试导入它 但出现以下错误 ModuleNotFoundError 没有名为 textblob 的模块 我在Windows 10系统中使用Spyder from textblo
  • Draft.js (react-draft-wysiwyg):从编辑器组件外部进行文本更新不起作用

    我正在尝试将文本从调用组件更新到编辑器组件中 我用props从调用者传递文本 但是当文本更改 内容编辑器中更新属性 时 编辑器组件中的文本不是 下面是调用组件的代码
  • 如何在运行时跳过整个 Python“单元测试”模块?

    我想要我的Pythonunittestmodule 告诉测试运行者在某些情况下完全跳过它 例如无法导入模块或找到关键资源 我可以用 unittest skipIf 跳过单元测试 TestCase课程 但我如何跳过整个模块 对每个类应用跳过是
  • 在 wxPython 的面板之间拖动按钮

    有谁知道一个示例 其中展示了如何在 wxPython 中将按钮从一个面板拖动到另一个面板 我在面板中创建了一个位图按钮 我希望能够将其拖到另一个面板并将我放在那里 我还没有找到任何使用按钮的示例 只有文本和文件 我正在使用最新版本的 Pyt
  • Pandas 使用“更大”的 DataFrames 附加性能 concat/append

    问题 我将数据存储在 csv 文件中 其中包含以下列 data id value 我有 15 个文件 每个文件包含大约 10 20mio 行 每个 csv 文件涵盖一个不同的时期 因此时间索引不重叠 但列是重叠的 新 ID 不时输入 旧 I
  • 如何为“转换”状态机定义触发器的枚举?

    作为不相关的后续这个答案 https stackoverflow com a 68269299 913098 它使用以下工作代码 from transitions import Machine from transitions import
  • Eclipse 上下文帮助

    现在我可以在 Eclipse WizardDialog Editor 中注册上下文帮助 1 我创建了一个help contexts xml 文件
  • 如何在animationDidStop委托中识别CAAnimation?

    我遇到了一个问题 我有一系列重叠的 CATransition CAAnimation 序列 所有这些序列我都需要在动画停止时执行自定义操作 但我只想要一个动画DidStop 的委托处理程序 但是 我遇到了一个问题 似乎没有一种方法可以唯一地
  • 在 C# 中以编程方式创建 DHCP 预留

    我被分配的任务是创建一个应用程序 该应用程序接收 MAC 地址并为该 MAC 地址创建 DHCP 保留 NET 中是否有内置的 API 可以轻松完成此任务 当我为基础设施编写应用程序时 Windows 2000 资源工具包中有一个名为 Dh
  • Python,如何在每一行中打印字典键及其值?

    请参阅下图以供参考 gt gt gt for key in d for item in d key print key item 1 2 1 3 2 4 2 5
  • 匿名命名空间:它们真的那么好吗?

    我一直在使用static关键字时间较长 用于定义内部链接 后来 我改用 C 风格 将本地事物包装在匿名命名空间中 然而 现在当我使用匿名命名空间多年后 我开始认为static关键字更容易使用 一个常见的问题是我有这样的模式 namespac
  • 不再支持 Xlsx 文件。设置新的 BW2 项目的解决方案?

    经过几个月的休息后 我本周恢复了 BW2 的计算 由于 XLRD 的更改 我的旧笔记本不再工作 它不再读取 xlsx 如果我理解的话 这个帖子 https exerror com xlrd biffh xlrderror excel xls
  • 为什么在打开连接的情况下会出现“阅读器关闭时调用 HasRows 的尝试无效”?

    我有这个代码 this is managed elsewhere SqlConnection connection connection Open this is one block of code separate from the ab
  • 如何将值参数传递给 Bootstrap 中的 modal.show() 函数

    我有一个页面显示当地咖啡馆的列表 当用户单击某个咖啡馆时 会显示一个模式对话框 其中已预先填写了 咖啡馆名称 该页面包含许多咖啡馆名称 表单应包含他点击的 咖啡馆名称 以下是生成为带有链接按钮的文本的咖啡馆名称列表 table class
  • SQL查询查找同一天安装和卸载应用程序的用户

    我正在尝试使用 Google BigQuery 中 Firebase Analytics 的数据来查找在同一天安装和卸载该应用程序的用户 这就是我到目前为止所得到的 我有一个查询 为我提供安装或卸载应用程序的用户 或 app instanc
  • Flask-WTF - validate_on_submit() 永远不会执行

    我正在使用 Flask WTF 这是我的表格 from flask ext wtf import Form TextField class BookNewForm Form name TextField Name 这是控制器 book ro