1.什么是快乐星球,什么是跨站请求伪造攻击CSRF?
属实明白了,就是利用了cookie会在会话期间保存用户认证信息。访问完某个网站后没有关闭会话,之后在其他网站故意设置陷阱引导你进入以前进入的网站(尚有cookie保存)办坏事。
因此就是说,用app.config['SECRET_KEY'] = 'hard to guess string'
这句代码配置了一个秘钥防止这种攻击,不用摆直接写上就行了。
2.Flask-WTF 扩展可以把处理 Web 表单的过程变成一种愉悦的体验。这个扩展对独立的 WTForms 包进行了包装,方便集成到 Flask 应用中。
所以说,直接用这个扩展配合前端就可以进行表单的显示了。
(1)声明一个类继承Flaskform类,并声明要使用的变量,这个变量对应很多html中的标准字段,例如SubmitField就是一个提交按钮,解释成html就是:<input class="btn btn-default" id="submit" name="submit" type="submit" value="Submit">
,其它还有的变量如:StringField、BooleanField、PasswordField等等,用到哪个在查就行。
class NameForm(FlaskForm):
name = StringField('What is your name?', validators=[DataRequired()])
submit = SubmitField('Submit')
(2)把提交的表单渲染成html
可以这样直接在html中写:
<form method="POST">
{{ form.hidden_tag() }}
{{ form.name.label }} {{ form.name() }}
{{ form.submit() }}
</form>
当然,这种方式渲染出的表单还很简陋。调用字段时传入的任何关键字参数都将转换成字段的 HTML 属性。即便能指定 HTML 属性,但按照这种方式渲染及美化表单的工作量还是很大,所以在条件允许的情况下,最好使用 Bootstrap 的表单样式。Flask-Bootstrap 扩展提供了一个高层级的辅助函数,可以使用 Bootstrap 预定义的表单样式渲染整个 Flask-WTF 表单,而这些操作只需一次调用即可完成。
即直接使用一句话即可完成:
{% import "bootstrap/wtf.html" as wtf %}
{{ wtf.quick_form(form) }}