session

介绍

session是基于cookie实现的,为什么有session,cookie是不安全的,session是将数据存到服务器,生成一把钥匙作为cookie返回给客户端,session Django框架已经实现完成使用起来非常方便,他可以将一些数据写到session中,不光可以做登录验证,详情见代码

写session

def login(request):

    if request.method == "GET":
        return render(request,"app02/login.html")

    else:
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        try:
            user_pwd = User.objects.get(user=user,pwd=pwd)
            # 写session
            # 在这做三件事情
            # 1 创建随机字符串
            # 2 将随机字符串 作为session-key 将字符串作为session-data插入到Django-session表中
            # 3 将session-ID和随机字符串组成键值对作为cookie返回给客户端
            request.session["user_id"] = user_pwd.pk # 这一行代码就完成啦 写session操作
            return redirect("/app02/index/")
        except Exception as e:
            return redirect("/app02/login/")

读session

def index(request):

    # 读session
    # 1 首先取session的钥匙
    # 2 取Django-session表中查符合的数据
    # 3 将取出的session-data数据
    user_id = request.session.get("user_id") # 可以直接读session-data内容
    if user_id:
        username = User.objects.get(pk=user_id).user

        return render(request,"app02/index.html",{'user':username})
    else:
        return redirect("/app02/login/")

记录上次访问的时间

def last_time(request):
    last_time = request.session.get("time","第一次访问")
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    request.session["time"] = now
    return render(request,"session/shop.html",{"time":last_time})

删除session

def logout(request):
    # 删除改钥匙的整条记录
    # request.session.flush()

    # 删除某一个value

    del request.session["user_id"]
    return redirect("/app02/login/")

posted @ 2023-02-07 21:25  zhq9  阅读(17)  评论(0编辑  收藏  举报