web表单(2)--重定向和用户会话&Flash消息

1.重定向和用户会话

在web表单(1)中的hello.py存在一个问题:用户输入名字提交表单后,点击浏览器的刷新按钮,会得到一个要求用户再次提交表单之前进行确认的警告。出现这个问题的原因是刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是包含表单数据的POST请求,刷新页面后会再次提交表单。所以要解决这个问题,最好的办法是别让web程序把POST请求作为浏览器发送的最后一个请求。

这个问题解决的实现方式是使用重定向作为POST请求的响应。

重定向:是一种特殊的响应,响应内容是URL,而不是包含HTML代码的字符串。浏览器收到这种响应时,会向重定向的URL发起GET请求。这个技巧称为POST/重定向/GET模式。

重定向会带来一个问题:程序处理POST请求时,使用form.name.data获取用户输入的名字,可是一旦请求结束了,数据也就丢失了,所以程序需要保存这个名字,这样重定向后的请求才能获得和使用这个名字。

程序可以把数据存储在用户会话中。

用户会话:是一种私有存储,存在于每个连接到服务器的客户端中。默认情况下,用户会话保存在客户端的cookie中,使用设置的SECRET_KEY进行加密签名。

hello.py完整代码:

from flask import Flask
from flask import render_template,session,redirect,url_for
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required
from flask_bootstrap import Bootstrap

app = Flask(__name__)
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] = 'yangdidi'

class NameForm(Form):
    name = StringField('What is your name ?',validators=[Required()])
    submit = SubmitField('Submit')
 
 
@app.route("/"<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值