python--Flask学习(三)Flask中的session操作

1、什么是seesion
session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。
2、配置SECRET_KEY
因为flask的session是通过加密之后放到了cookie中。所以有加密就有密钥用于解密,所以,只要用到了flask的session模块就一定要配置“SECRET_KEY”这个全局宏。一般设置为24位的字符。配置方法一般有两种。
(1)新建一个config.py的文件配置secret_key
config.py

SECRET_KEY = 'XXXXXXXXX'

然后在主运行文件里面添加config文件里面的内容。
main.py

# encoding: utf-8

from flask import Flask,session
import config

app = Flask(__name__)

(2)直接在主运行文件里面配置。配置config的时候也是和操作字典是一样的 。
main.py

from flask import Flask,session
import os

app = Flask(__name__)
 app.config['SECRET_KEY'] = os.urandom(24) # 随机产生24位的字符串作为SECRET_KEY

产生方法:引入OS模块中的产生一个24位的随机字符串的函数,这种方法有个缺点,就是服务器每次启动之后这个SECRET_KEY的值都会变。
3、操作session–如同操作字典一样
Flask中的session是通过from flask import session。然后添加值key和value进去即可。
(1)设置session

from flask import Flask,session
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)

# 设置session
@app.route('/')
def set():
    session['username'] = 'asd' # 设置“字典”键值对
    return 'success'

if __name__ == '__main__':
    app.run()

(2)读取session
因为session就像字典一样所以,操作它的时候有两种方法:

0x01  result = session[‘key’] :如果内容不存在,将会报异常
0x02  result = session.get(‘key’) :如果内容不存在,将返回None

所以,使用第二种方法获取session较好。

 # 读取session
@app.route('/get')
def get():
    # session['username'] = 'asd'
    # print(session.get('username'))
    # print(session['username'])
    return session.get('username')

(3)删除session

# 删除session
@app.route('/delete')
def delete():
    session['username'] = 'asd'
    print(session.get('username'))
    session.pop('username')
    print(session.get('username'))
    return 'success'

(4)清除session

# 清除session
@app.route('/clear')
def clear():
    session['username'] = 'asd'
    print(session.get('username'))
    session.clear
    print(session.get('username'))
    return 'success'

4、设置session的过期时间
如果没有指定session的过期时间,那么默认是浏览器关闭后就自动结束。
下面的方法可以用来配置session的过期时间
(1)如果设置了session的permanent属性为True,那么过期时间是31天。

session.permanent = True #一个月有效期

(2)一种更先进的配置有效期的方法:(比如配置7天有效)

  • 引入包:from datetime import timedelta;
  • 配置有效期限:app.config[‘PERMANENT_SESSION_LIFETIME’] = timedelta(days=7) # 配置7天有效
  • 设置:session.permanent = True;
from flask import Flask,session
from datetime import timedelta
import os

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效

# 设置session
@app.route('/')
def set():
    session['username'] = 'asd'
    session.permanent = True
    return 'success'
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供关于Python-Flask框架开发的图书管理系统的详细介绍和源码解析。这个系统是基于Flask框架的,可以帮助用户管理图书信息,包括添加、删除、修改和查询等功能。此外,系统还具有用户登录、注册、退出等功能,以确保数据的安全性和完整性。 系统的主要功能点如下: 1. 用户登录、注册、退出 2. 图书添加、删除、修改、查询 3. 图书分类管理 4. 用户权限管理 下面是系统的简要介绍: 1. 用户登录、注册、退出 用户需要先进行注册,注册成功后可以进行登录操作。登录成功后,用户可以进行图书管理操作。如果用户需要退出,可以点击退出按钮进行退出。 2. 图书添加、删除、修改、查询 用户可以在系统添加图书信息,包括图书名称、作者、出版社、出版日期、价格等信息。用户还可以删除、修改和查询图书信息。查询支持按照图书名称、作者、出版社等条件进行查询。 3. 图书分类管理 用户可以对图书进行分类管理,包括新建分类、编辑分类和删除分类等操作。图书分类可以根据用户的需求进行自定义。 4. 用户权限管理 系统还具有用户权限管理功能。管理员可以对普通用户进行授权,授权后的用户可以进行添加、删除、修改和查询等操作。 下面是部分系统源码解析: 1. 登录操作 ``` @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('index')) flash('Invalid username or password.') return render_template('login.html', form=form) ``` 2. 图书添加操作 ``` @app.route('/add_book', methods=['GET', 'POST']) @login_required def add_book(): form = BookForm() if form.validate_on_submit(): book = Book(name=form.name.data, author=form.author.data, publisher=form.publisher.data, publish_date=form.publish_date.data, price=form.price.data) db.session.add(book) db.session.commit() flash('The book has been added.') return redirect(url_for('index')) return render_template('add_book.html', form=form) ``` 以上仅是系统源码的部分解析,系统的其他功能点和源码解析可以参考完整的源码和文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值