表单

编写的HTML代码中,form标签提交表单数据的HTTP请求默认使用GET方法,需要使用method属性将其指定为POST。
input元素必须指定name属性才能提交数据,服务端需要通过name属性值来获取相应字段的数据。
label元素使用for属性填入需要绑定input元素的id属性时,当鼠标用户点击标签文字时,会自动激活对应的输入框。
当点击表单提交按钮时,浏览器会创建一个新的请求,默认发往当前页面的URL,可以使用action属性自定义目标URL。

处理表单数据

请求对象
from flask import request

Flask会在请求触发后将请求信息放在request对象中,因为其在请求触发时才会包含数据,所以只能在视图函数内部调用它。它包含请求相关的所有信息,如请求路径(request.path)、请求方法(request.form)、表单数据(request.form)、查询字符串(request.args)等。

request.form是一个特殊的字典,可以用表单字段的name属性值来获取用户填入的对象数据。

flash消息

flash()是Flask提供的跨请求临时消息传递工具,主要用于给用户反馈操作结果。底层依赖session,使用前必须配置SECRET_KEY(session加密需要)。

from flask import flash

flash()函数用来在视图函数中向模版传递提示消息,get_flashed_messsage()函数用来在模版中获取提示消息。
flash()函数在内部会把消息存储到Flask提供的session对象中。session用来在请求间存储数据,他会把数据签名后存储到浏览器的Cookie中。
get_flashed_messages()返回消息的同时还会从Cookie中清除掉消息数据。

消息的存储与读取:

  • 调用flash(message)时,消息会被追加到session中的一个名为_flashes的列表里。
  • 调用get_flashed_messages()时,会读取并移除这个列表中的所有消息(保证只显示一次)。
重定向响应

Flask提供redirect()函数来快捷生成重定向响应。
redirect()函数的本质是生成一个带3xx状态码和Location响应头的HTTP响应对象;
常见重定向状态码:

  • 301: 永久重定向(浏览器会缓存这个重定向关系)
  • 302: 临时重定向(默认,浏览器不会缓存)
  • 307: 临时重定向(更严格的HTTP/1.1规范)

参考