从零开始学Flask框架-006
重定向和用户会话
因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是一个包含表单数据的POST 请求,刷新页面后会再次提交表单。
基于这个原因,最好别让Web 程序把POST 请求作为浏览器发送的最后一个请求。为了解决这个问题,我们可以使用重定向作为POST 请求的响应。
但这种方法会带来另一个问题。程序处理POST 请求时,使用form.name.data 获取用户输入的名字,可是一旦这个请求结束,数据也就丢失了。于是,这就需要把数据存储在用户会话session中。
from flask import Flask,render_template from flask_bootstrap import Bootstrap from flask import request,url_for from wtforms import StringField,SubmitField from wtforms.validators import DataRequired from app.Views.LoginForm import LoginForm from flask import redirect,session #初始化 app = Flask(__name__) bootstrap = Bootstrap(app) app.config['SECRET_KEY'] = 'hard to guess string' # 初始化实例 moment = Moment(app) #路由,处理URL 和函数之间关系的程序称为路由 @app.route('/',methods=['GET','POST']) #视图函数,函数执行,返回结果 def index(): # return render_template('index.html',current_time=datetime.utcnow()) name = None form = LoginForm() if form.validate_on_submit(): session['name'] = form.name.data form.name.data = '' return redirect(url_for('index')) return render_template('index.html',form=form,name=session.get('name')) #启动服务器 if __name__ == '__main__': app.run()
本文来自博客园,作者:江雪独钓翁,转载请注明原文链接:https://www.cnblogs.com/zhouwp/p/11910445.html