Django框架之Cookie和Session组件

一、什么是 Cookie

  Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。

Cookie 主要用于以下三个方面:

(1)会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)

(2)个性化设置(如用户自定义设置、主题等)

(3)浏览器行为跟踪(如跟踪分析用户行为等)

Django操作Cookie

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        if username == 'jason' and password == '123':
            old_path = request.GET.get('next')
            if old_path:
                #重定向上次访问的页面
                obj = redirect(old_path)
            else:
                obj = redirect('/home/')
            # 登录成功 浏览器设置cookie,
            # obj.set_cookie('name','jason',expires=7*24*3600)
            obj.set_cookie('name','jason',max_age=5)    
            return obj
    return render(request,'login.html')

from functools import wraps
def login_auth(func):        # 登录装饰器
    @wraps(func)
    def inner(request,*args,**kwargs):
        #获取当前访问路径
        old_path = request.get_full_path()
        # 校验cookie
        if request.COOKIES.get('name'):
            return func(request,*args,**kwargs)
        #在登录路径后拼接当前路径(在登录成功后可返回当前)
        return redirect('/login/?next=%s'%old_path)
    return inner


@login_auth
def index(request):
    # # print(request.COOKIES.get('name'))
    # if request.COOKIES.get('name'):
    return HttpResponse('我是index页面,只有登录了才能看')


@login_auth
def home(request):
    return HttpResponse('我是home页面,只有登录了才能看')

二、什么是 Session

  Session 代表着服务器和客户端一次会话的过程。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当客户端关闭会话,或者 Session 超时失效时会话结束。

待补充。。。

猜你喜欢

转载自www.cnblogs.com/yuanlianghong/p/11043004.html