内置对象—— session的应用
时间: 2023-10-22 12:07:23 浏览: 92
Session 是 Web 应用程序中常用的一种机制,它用于存储用户的数据,以便在应用程序的不同页面中进行共享。Session 可以通过 cookie 或 URL 参数来实现,但是最常见的方式是使用 cookie。
在使用 session 时,服务器会为每个用户分配一个唯一的会话 ID,并将该 ID 存储在 cookie 中。每次用户访问网站时,服务器都会从 cookie 中获取会话 ID,然后将与该 ID 相关联的数据加载到 session 对象中。
下面是一个使用 session 的示例:
```python
from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = 'mysecretkey'
@app.route('/')
def index():
if 'username' in session:
username = session['username']
return 'Logged in as ' + username + '<br>' + \
"<b><a href = '/logout'>click here to log out</a></b>"
return "You are not logged in <br><a href = '/login'></b>" + \
"click here to log in</b></a>"
@app.route('/login', methods = ['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return '''
<form action = "" method = "post">
<p><input type = "text" name = "username"/></p>
<p><input type = "submit" value = "Login"/></p>
</form>
'''
@app.route('/logout')
def logout():
session.pop('username', None)
return redirect(url_for('index'))
```
在上面的示例中,我们首先需要导入 Flask 和 session。然后,我们创建一个名为 app 的 Flask 实例,并将其密钥设置为 "mysecretkey"。这个密钥用于保护 session 数据,因此应该保持机密。
接下来,我们定义了三个路由函数:
- index():该函数检查 session 是否包含一个名为 "username" 的键,如果是,则返回用户已登录的消息;否则,返回用户未登录的消息。
- login():该函数使用 POST 方法处理表单提交,并将输入的用户名存储在 session 中。然后,该函数将用户重定向到 index() 函数。
- logout():该函数从 session 中删除 "username" 键,并将用户重定向到 index() 函数。
在上面的示例中,我们使用了 Flask 的内置 session 对象来存储用户的数据。session 对象是一个类字典的对象,可以使用与字典相同的方式存储和访问数据。可以使用 session['key'] = value 来存储数据,使用 session.get('key') 来获取数据。
总之,使用 session 可以方便地在不同页面之间共享用户数据,并且可以通过设置密钥来保护敏感数据。
阅读全文