重定向和用户会话

因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。如果这个请求是一个包含表单数据的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()

从零开始学Flask框架-006的更多相关文章

  1. 从零开始学Flask框架-004

    Flask-Moment pip install flask-moment 除了moment.js,Flask-Moment 还依赖jquery.js.但是Bootstrap 已经引入了jquery. ...

  2. 从零开始学Flask框架-007

    Flash消息 from flask import flash 渲染Flash消息,在基模板base.html中引入get_flashed_messages() {% extends "bo ...

  3. 从零开始学Flask框架-005

    表单 Flask-WTF 项目结构 pip install flask-wtf 为了实现CSRF 保护,Flask-WTF 需要程序设置一个密钥.Flask-WTF 使用这个密钥生成加密令牌,再用令牌 ...

  4. 从零开始学Flask框架-003

    index.py from flask import Flask,render_template from flask_bootstrap import Bootstrap #初始化 app = Fl ...

  5. 从零开始学Flask框架-002

    Jinja2模板 默认情况下,Flask 在程序文件夹中的templates 子文件夹中寻找模板. Jinja2 中的extends 指令从Flask-Bootstrap 中导入bootstrap/b ...

  6. 从零开始学Flask框架-001

    新建项目 目录结构 Index.html <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  7. 从零开始学Flask框架-008

    数据库 安装Flask-SQLAlchemy扩展库 pip install flask-sqlalchemy 引入SQLAlchemy类 from flask_sqlalchemy import SQ ...

  8. 从零开始学 Java - 搭建 Spring MVC 框架

    没有什么比一个时代的没落更令人伤感的了 整个社会和人都在追求创新.进步.成长,没有人愿意停步不前,一个个老事物慢慢从我们生活中消失掉真的令人那么伤感么?或者说被取代?我想有些是的,但有些东西其实并不是 ...

  9. 4. 使用别的json解析框架【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/51585921 此文章已经废弃,请看新版的博客的完美解决方案: 78. Spring Boo ...

随机推荐

  1. K8S中POD节点状态ContainerCreating原因排查

    现象: # kubectl get pods -n kube-system |grep dashboard kubernetes-dashboard-6685cb584f-dqkwk 0/1 Cont ...

  2. #C++初学记录(acm试题#预处理)

    C - Lucky 7 in the Pocket BaoBao loves number 7 but hates number 4, so he refers to an integer as a ...

  3. PostgreSQL 增量备份详解以及相关示例

    PostgreSQL 没有类似MySQL 的二进制日志, 但是有和MySQL 类似的REDO LOG,并且有MySQL 没有的REDO 归档功能.当然REDO 的归档已经MariaDB 和Percon ...

  4. cmd命令net和sc

    来看windows中启动和关闭服务的方法:在cmd下可有两种方法打开,分别是net和sc. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境. ...

  5. git只提交修改部分的代码

    思路: 先用git status 查找出哪些文件被修改过了,然后 只git commit odin/code/pom.xml 1. $ git status (查看当前更改的代码) On branch ...

  6. Tosca 添加 modules,添加Library,引用重复步骤

    #增加modules modules模块式基础,好像一切都得从modules开始,想下面这样一个简单的login module就建好了 把这个module login 拖到具体的test case上 ...

  7. Redis For Windows安装及密码

    启动要先开启一个控制台作为服务端,启动服务,然后在重新打开一个控制台,连接服务进行操作. redis-server.exe redis.conf 重新打开一个控制台,刚开始连接服务,因为初始没有密码, ...

  8. Java 13 特性解读

    Java 13 特性解读    转 https://blog.csdn.net/bjweimengshu/article/details/100978383   2017年8月,JCP执行委员会提出将 ...

  9. 从0开始学爬虫11之使用requests库下载图片

    从0开始学爬虫11之使用requests库下载图片 # coding=utf-8 import requests def download_imgage(): ''' demo: 下载图片 ''' h ...

  10. osg gis编译日志

    1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...