返回
session

老雷flask教程之session会话

Session(会话)数据存储在服务器上

为每个客户端的会话分配会话ID。会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。

对于此加密,Flask应用程序需要一个定义的SECRET_KEY

一、设置

    设置加密key

    app.config["SECRET_KEY"] = "asdasdwqweqweqweqwe"

    设置过期时间

    app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hours=2)

二、使用

    设置

    session["k"]="val"

    删除

    session.pop("k")

    获取

    session.get('k')

三、用户注册登录实现    

from flask import Flask,session,request,render_template,Blueprint
import hashlib
import model  
import json
user=Blueprint('user',__name__)
db = model.init()
@user.route("/user/index")
def index():

    return render_template("user/index.html")
@user.route("/user/logout")
def logout():
    session.pop("ssuser")
    return render_template("user/index.html")    
@user.route("/user/login")
def login():
    return render_template("user/login.html")
@user.route("/user/loginsave",methods=["POST"])
def loginsave():
    username=request.form.get("username")
    password=request.form.get("password")
    sql="select * from sky_user where username=%s "
    row=db.getRow(sql,(username))
    if not row:
        msg="用户名不存在"
        return render_template("user/msg.html",msg=msg)
    password=hashlib.md5(password.encode(encoding='UTF-8')).hexdigest()
    if row["password"]!=password:
        msg="密码不正确"
        return render_template("user/msg.html",msg=msg)
    session['ssuser']={
        "userid":row["userid"],
        "nickname":row["nickname"]
    }
    msg="登录成功"
    return render_template("user/msg.html",msg=msg,ssuser=session['ssuser'])    
@user.route("/user/register")
def register():
    return render_template("user/register.html")
@user.route("/user/regsave",methods=["POST"])    
def regsave():
    username=request.form.get("username")
    nickname=request.form.get("nickname")
    password=request.form.get("password")
    password2=request.form.get("password2")
    if username=='' or nickname=='':
        msg="用户名不能为空"
        return render_template("user/msg.html",msg=msg)
    sql="select * from sky_user where username=%s or nickname=%s "
    row=db.getRow(sql,(username,nickname))
    if row:
        msg="用户名或者昵称已经存在"
        return render_template("user/msg.html",msg=msg)
    sql="insert into sky_user set username=%s,nickname=%s,password=%s"
    password=hashlib.md5(password.encode(encoding='UTF-8')).hexdigest()
    db.insert(sql,(username,nickname,password))     
    msg="注册成功"
    return render_template("user/msg.html",msg=msg)