当前位置: 首页 > 面试题库 >

表格对WTForms永远无效

虞华翰
2023-03-14
问题内容

我有一个Flask-WTF表单登录。显然,该表单永远无效,无论我输入什么“成功”,都永远不会打印。为什么我的表格无法验证?

class loginForm(Form):
    email = EmailField('email', validators=[InputRequired("Please enter your email address."), Email("Please enter a valid email address.")])
    password = PasswordField('password', validators=[InputRequired("Please enter your password.")])

@app.route('/sign-in', methods=['POST', 'GET'])
def signIn():
    form = loginForm(request.form)
    if form.validate_on_submit():
        print 'success'
        return redirect('/')
    return render_template('signIn.html')



<form method="POST" action="/sign-in">
    {{ form.email(placeholder='Email', class="textBox") }}
    {{ form.password(placeholder='Password', class="textBox") }}
    <button onclick="submit()">Sign In</button>
</form>

问题答案:

Flask-WTF添加了CSRF保护字段。如果不存在,CSRF验证将失败,并且该表格将无效。用于form.hidden_tag()在表单中包括所有隐藏字段(包括CSRF字段)。

<form method="post">
    {{ form.hidden_tag() }}
    ...

通常,如果表单未通过验证,则应form.errors在致电后validate进行检查以了解问题所在。

您没有看到错误,因为您没有渲染该字段(在这种情况下也没有渲染任何字段的错误,但这对解决此问题没有帮助)。如果您在调试器中运行并进行了检查form.errors,您将看到确实存在“
CSRF令牌丢失”
错误。



 类似资料:
  • 问题内容: 我今天发现了一种不寻常的Java方法: 根据我所读过的有关Java传递变量(不管是否传递复杂对象)的行为的所有资料,该代码完全不起作用。所以…我在这里想念什么吗?是我身上遗失了一些微妙之处,还是这段代码属于thedailywtf? 问题答案: 正如Rytmis所说,Java按值传递引用。这意味着您可以合法地对方法的参数调用变异方法,但不能重新分配它们并期望值传播。 例: 编辑: 在这种

  • 问题内容: 我试图比较两个相同类型的对象(在dosHave方法中),但是我从未返回过“ true”。这是我的代码: “ Osoba”类如下所示: 来自主代码: 无论我要使用什么输入,这部分都永远不会发生。“ kartoteka”是我当然进口的包裹。每个类都在单独的程序包中,但是使用它们没有问题。我已经尝试了一段时间,但没有任何帮助,似乎 从来都不是真的,但我不知道为什么。没有Boolean.TRU

  • WTForms 是一个 Python 表单验证、渲染开发包,只需要以如下形式定义一个表单: class MyForm(Form): first_name = TextField(u'First Name', validators=[validators.required()]) last_name = TextField(u'Last Name', validators=[valid

  • 问题内容: 我可以水平对齐div,所有内容看起来都不错。寻找垂直对齐不包含任何表格的div。我尝试在#container内将边距位置设置为某些负值,但是这种方法可行。我知道CSS还不支持吗? 这是我的标记: 运行上面的代码段,然后单击“整页”以查看其当前外观。基本上,它在水平方向上看起来不错,但是现在我需要它在页面中也垂直居中。 我要垂直对齐的元素是#container div。该效果将迫使整个d

  • 问题内容: 我使用Spring应用程序上下文来处理Java Web应用程序。在这种情况下,我使用Quartz定义了计划作业。这些作业由.properties文件中定义的cron触发。 Spring上下文嵌入战争中,而.properties文件位于应用程序服务器(在这种情况下为Tomcat)上。 这很好,并允许根据环境(开发,集成,生产等)定义不同的克朗。 现在,在我自己的计算机上本地运行此应用程序

  • 问题内容: 有什么办法可以使这两个软件包一起运行? 因此,基本上,我希望两全其美。自动运行服务器(并在出现错误时重新启动),并在发生.js文件更改时自动更新。 问题答案: 但是要避免该问题,您可以执行以下操作: 这样可以确保实际退出(而不是给您“应用程序崩溃”消息),然后再次将其接收。 在此指定要运行的命令,否则将默认为节点。不使用-c会导致在此答案的注释中提及的错误。