为什么使用 WTForms 而不是仅使用 HTML 发帖
Why use WTForms instead of just posting with HTML
最近很好奇用WTForms提交数据到flask有什么好处?普通的 HTML、JavaScript 或 bootstrap 表单看起来更容易设置样式,也更容易提交。另外,您可以省略创建 WTForms class 所需的所有 python 代码。有人可以解释什么是优势吗?
我可以说 CSRF protection
是最重要的原因之一,但是有很多原因可以解释为什么人们会使用 WTFroms 而不是普通的 HTML 表单。
- 开箱即用的 CSRF 保护
- 开箱即用的表单验证
- WTForms 以 类 的形式出现,所以所有的好处都来自对象形式。
基本上,如果您的项目有很多看起来相同但略有不同的表单,WTForms 会很有帮助。
然后你有开箱即用的验证,你对电子邮件和所有其他类型的数据使用一个简单的验证,它们就在那里,不需要费心编写你自己的验证器并继续维护它们。
CSRF 是 owasp 十大攻击之一[1],因此对此提供良好的保护非常重要。
WTForms 非常有用,它在数据验证方面为您做了很多繁重的工作
CSRF protection
。
另一个有用的东西是与 Jinja2 结合使用,您需要编写更少的代码来呈现表单。
Note: Jinja2 is one of the most used template engines for Python.
例如,当使用 FlaskForm 时,渲染表单的 CSRF 字段将是这样的。
<form method="post">
{{ form.csrf_token }}
</form>
但是如果模板不使用 FlaskForm,则需要在表单中使用令牌呈现隐藏输入。
<form method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
</form>
在某种程度上,代码更少。
最近很好奇用WTForms提交数据到flask有什么好处?普通的 HTML、JavaScript 或 bootstrap 表单看起来更容易设置样式,也更容易提交。另外,您可以省略创建 WTForms class 所需的所有 python 代码。有人可以解释什么是优势吗?
我可以说 CSRF protection
是最重要的原因之一,但是有很多原因可以解释为什么人们会使用 WTFroms 而不是普通的 HTML 表单。
- 开箱即用的 CSRF 保护
- 开箱即用的表单验证
- WTForms 以 类 的形式出现,所以所有的好处都来自对象形式。
基本上,如果您的项目有很多看起来相同但略有不同的表单,WTForms 会很有帮助。
然后你有开箱即用的验证,你对电子邮件和所有其他类型的数据使用一个简单的验证,它们就在那里,不需要费心编写你自己的验证器并继续维护它们。
CSRF 是 owasp 十大攻击之一[1],因此对此提供良好的保护非常重要。
WTForms 非常有用,它在数据验证方面为您做了很多繁重的工作
CSRF protection
。
另一个有用的东西是与 Jinja2 结合使用,您需要编写更少的代码来呈现表单。
Note: Jinja2 is one of the most used template engines for Python.
例如,当使用 FlaskForm 时,渲染表单的 CSRF 字段将是这样的。
<form method="post">
{{ form.csrf_token }}
</form>
但是如果模板不使用 FlaskForm,则需要在表单中使用令牌呈现隐藏输入。
<form method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
</form>
在某种程度上,代码更少。