资讯专栏INFORMATION COLUMN

[译] Flask教程--会话

microelec / 2256人阅读

摘要:跟不同会话数据存储于服务器上会话是指一个客户在一个服务上从登录到注销之间的时间段会话中需要存储的会话数据储存在服务器上的一个临时目录中每个会话都被分配了一个会话会话数据以的形式存储并且服务器会把会话数据进行加密为了进行这样的加密应用需要定义

跟Cookie不同, 会话(Session)数据存储于服务器上. 会话是指一个客户在一个web服务上从登录到注销之间的时间段. 会话中需要存储的会话数据, 储存在服务器上的一个临时目录中.

每个会话都被分配了一个会话ID, 会话数据以Cookie的形式存储, 并且服务器会把会话数据进行加密. 为了进行这样的加密, Flask应用需要定义一个配置: SECRET_KEY.

会话对象同样是一个字典, 对应的键值分别是Session的各个键和对应的值.

例如, 如果设置一个会话变量username:

session[‘username’] = ’admin’

如果要释放这个变量, 使用pop()方法:

session.pop("username", None)

下面的代码简单演示了会话在Flask中如何使用. 访问URL "/" 时, 如果会话变量username没有被设置, 则提示用户需要登录.

@app.route("/")
def index():
   if "username" in session:
      username = session["username"]
         return "Logged in as " + username + "
" + "click here to log out" return "You are not logged in
" + "click here to log in"

如果用户浏览到URL "/login" 上, 对应着login()函数, 因为此时请求使用的GET方法, 所以浏览器展示出一个登录表单. 当表单提交时, 会POST到 "/login" 上, 此时我们设置会话变量, 并重定向到 "/" 上, 这时, "username"这个会话变量就可以找到了.

@app.route("/login", methods = ["GET", "POST"])
def login():
   if request.method == "POST":
      session["username"] = request.form["username"]
      return redirect(url_for("index"))
   return """    
   

"""

这个应用同样有个logout()注销方法, 这个方法清除会话变量"usernmae", 这样之后, 访问URL "/"就会展示提示用户登录的字样.

@app.route("/logout")
def logout():
   # remove the username from the session if it is there
   session.pop("username", None)
   return redirect(url_for("index"))

按如下的方式配置密钥:

from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = "any random string’

然后我们就可以启动应用, 观察各个url的输出了.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40949.html

相关文章

  • []Flask教程--重定向与错误

    摘要:类有一个方法当我们调用它时它会返回一个响应对象并且按指定的状态码将用户重定向到另一个位置方法的原型如下在上面的函数中我们要重定向的位置状态码会在头中发送给浏览器默认为用这个参数来初始化响应对象下面是一些标准的状态码重定向的状态码默认是也就是 Flask类有一个redirect()方法. 当我们调用它时, 它会返回一个响应对象并且按指定的状态码将用户重定向到另一个位置. redirect...

    leap_frog 评论0 收藏0
  • []Flask教程-模版

    摘要:我们可以让绑定到某个的函数返回比如下面的代码中函数会返回由包裹的字符串但大家看得出这样直接通过代码返回内容显得很笨尤其当我们碰到需要对输入变量做条件判断和循环时我们经常需要做字符串嵌入拼接这种体力活这种情况下我们需要利用自带的模版引擎我们可 我们可以让绑定到某个URL的函数返回HTML. 比如下面的代码中, hello()函数会返回由包裹的Hello World字符串. from fl...

    jifei 评论0 收藏0
  • []Flask教程--静态文件

    摘要:一个应用经常需要或之类的静态文件来帮助网页更好的展示内容通常服务器被用来提供这种静态文件服务但在程序的开发阶段这些文件需要被放置在应用根目录下的文件夹中启动后使用时前缀以开头在下面的例子中文件中定义了一个函数这个函数在中可以被一个按钮的事件 一个web应用经常需要javascript或css之类的静态文件来帮助网页更好的展示内容. 通常, web服务器被用来提供这种静态文件服务, 但在...

    sf190404 评论0 收藏0
  • []Flask教程--将表单数据发送到模板

    摘要:之前我们已经看到在中我们可以给规则指定方法对应的函数可以按字典形式接收表单数据然后将这些数据输送到模板中并最终渲染为网页在下面的例子中渲染一个含有表单的网页填入到表单的数据被到然后触发了函数函数将表单数据组装起来放入字典对象中然后发送到模板 之前我们已经看到在Flask中我们可以给URL规则指定http方法, 对应的函数可以按字典形式接收表单数据, 然后将这些数据输送到模板中并最终渲染...

    you_De 评论0 收藏0
  • []Flask教程-HTTP方法

    摘要:协议是万维网数据通信的基础在这个协议上可以对同一使用不同的方法获取数据下面展示了几种不同的方法将未经加密的信息发送的服务器是最通用的方法该方法除了服务端不返回响应内容只返回头信息之外同是一样的用于向服务器发送表单数据请求不会被缓存将所指示的 HTTP协议是万维网数据通信的基础. 在这个协议上可以对同一URL使用不同的方法获取数据.下面展示了几种不同的HTTP方法. GET 将未经加...

    anonymoussf 评论0 收藏0

发表评论

0条评论

microelec

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<