python学习:Django中的cookie和session(5)

Django的Cookie和Session

        使用cookie和session保存个人信息,cookie和session是一些键值对保存信息。通过Cookie登陆控制验证。使用request.COOKIES保存提交的cookie信息。

  使用response设置cookie,response.set_cookie()设置cookie信息键值对。

  设置cookie有效时间set_cookie(max_age参数,expires参数)。max_age设置秒数,expires可以设置一个时间字符串,datetime.datetime。

        Cookie安全性较低,所有信息在客户端,容易被获取到,Session可以将键值对信息存到数据库中,可以是服务器端任何位置,返回给客户端一个字符串名字,客户端通过字符串名字进行认证。

        使用request.session 可以获取到session对象。request.session[“键“],获取具体键的值。

        使用request.session[“键”]=值,设置session。

        使用request.session.get(“键”),获取键值。

        使用 del request.session(“键“),删除键值。

示例:
def login(request):

    # 获取cookie

    print("COOKIES:", request.COOKIES)

    #获取session,没有提示session,修改settings.py MIDDLEWARE 修改为 MIDDLEWARE_CLASSES

    print("session:",request.session)

    if request.method == 'POST':

        name = request.POST.get("name");

        pwd = request.POST.get("pwd");

        print(name,pwd);

        if name =="tang" and pwd == "123":

            # #使用cookie方式

            # ret = redirect("/url_dispatch/login_success/")

            # print(type(ret))

            # #设置cookie

            # ret.set_cookie("flag","1")

            # #设置cookie有效时间10s。max_age

            # ret.set_cookie(max_age=10)

            # return ret

 

            #使用session方式

            #设置session,session字典

            request.session["login"]=True;

            request.session["user"] = name;

            return redirect("/url_dispatch/login_success/")

 

    return  render(request,"login.html")

 

def login_suc(request):

    # if  request.COOKIES.get("flag") == "1":

    #     return render(request,"login_success.html")

    # else:

    #     return redirect("/login/")

 

    if request.session.get("login"):

        name = request.session.get("user");

        return render(request, "login_success.html",locals())

    else:

        return redirect("/url_dispatch/login/")

 

posted @ 2020-12-19 14:24  渔歌晚唱  阅读(86)  评论(0)    收藏  举报