zoukankan      html  css  js  c++  java
  • Flask Web学习笔记(三)

    重定向和用户会话


    1.从Flask模块中导入session,redirect,url_for

    from flask import Flask, render_template, session, redirect, url_for
    
    @app.route('/',methods=['GET','POST'])
    def index():
        form = NameForm()
        if form.validate_on_submit():
            session['name'] = form.name.data
            return redirect(url_for('index'))
            return render_template('index.html',form=form,name=session.get('name'))

     在程序的前一个版本中,局部变量 name 被用于存储用户在表单中输入的名字。这个变量现,在保存在用户会话中,即 session['name'],所以在两次请求之间也能记住输入的值。

    用户输入名字后提交表单,然后点击浏览器的刷新按钮,会看到一个莫名其妙的警告,要求在再次提交表单之前进行确认。之所以出现这种情况,是因为刷新页面时浏览器会重新发送之前已经发送过的最后一个请求。

    如果这个请求是一个包含表单数据的 POST 请求,刷新页面后会再次提交表单。大多数情况下,这并不是理想的处理方式

    重定向作为 POST 请求的响应,而不是使用常规响应。重定向是一种特殊的响应,响应内容是 URL,而不是包含 HTML 代码的字符串。

    浏览器收到这种响应时,会向重定向的 URL 发起 GET 请求,显示页面的内容。

    这个页面的加载可能要多花几微秒,因为要先把第二个请求发给服务器。

    除此之外,用户不会察觉到有什么不同。现在,最后一个请求是 GET 请求,所以刷新命令能像预期的那样正常使用了。

    这个技巧称为 Post/ 重定向 /Get 模式。程序可以把数据存储在用户会话中,在请求之间“记住”数据。用户会话是一种私有存储,存在于每个连接到服务器的客户端中。

     

  • 相关阅读:
    Linux系统主流架构一
    CentOS7.2部署KVM虚拟机
    MySQL
    MQ消息队列
    LVM
    Docker管理工具-Swarm部署记录
    Linux下DNS简单部署(主从域名服务器)
    kvm虚拟机命令梳理
    批量创建10个系统帐号tianda01-tianda10并设置密码
    随笔分类
  • 原文地址:https://www.cnblogs.com/alanlee1473/p/9692956.html
Copyright © 2011-2022 走看看