COOKIE的使用

首先设置  COOKIES

USERINFO={
    'root':{'password':'root123'},
    'zte':{'password':'zte'}
}
def login(request):
    if request.method == "GET":
        return  render(request,'login.html',{'name':'ASDFSDGS'})
    if request.method == "POST":
        u = request.POST.get('username')
        p = request.POST.get('password')
        dic = USERINFO.get(u)
        if not dic:
            return render(request, 'login.html', {'name': '用户不存在'})
        if dic['password'] == p:
            res = redirect('/hostApp/index/')
            res.set_cookie('username',u)
            res.set_cookie('password',p)
            return res
        else:
            return render(request, 'login.html', {'name': 'ASDFSDGS'})

  在index页面上获取cookie

def index(request):
    username = request.COOKIES.get('username')
    pwd = request.COOKIES.get('password')
    if not username :
        return redirect('/hostApp/login/')

  cookie的其他参数:

def cookie(request):
    #
    # request.COOKIES
    # request.COOKIES['username111']
    request.COOKIES.get('username111')

    response = render(request,'index.html')
    response = redirect('/index/')
    # 设置cookie,关闭浏览器失效
    response.set_cookie('key',"value")
    # 设置cookie, N秒只有失效
    response.set_cookie('username111',"value",max_age=10)
    # 设置cookie, 截止时间失效
    import datetime
    current_date = datetime.datetime.utcnow()
    current_date = current_date + datetime.timedelta(seconds=5)
    response.set_cookie('username111',"value",expires=current_date)
    response.set_cookie('username111',"value",max_age=10)

    # request.COOKIES.get('...')
    # response.set_cookie(...)
    obj = HttpResponse('s')
    #加密COOKIES
    obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf")
    request.get_signed_cookie('username',salt="asdfasdf")

    return response

  前台设置cookie

$(function(){
                var v = $.cookie('per_page_count', {'path': "/user_list/`"});
                $('#ps').val(v);
        });

        function changePageSize(ths){
            var v = $(ths).val();
            console.log(v);
            $.cookie('per_page_count',v, {'path': "/user_list/"});

            location.reload();
        }

  使用装饰器实现用户认证:

- 装饰器
			FBV:
				def auth(func):
					def inner(reqeust,*args,**kwargs):
						v = reqeust.COOKIES.get('username111')
						if not v:
							return redirect('/login/')
						return func(reqeust, *args,**kwargs)
					return inner
		
			CBV:
				from django import views
				from django.utils.decorators import method_decorator

				@method_decorator(auth,name='dispatch')
				class Order(views.View):

					# @method_decorator(auth)
					# def dispatch(self, request, *args, **kwargs):
					#     return super(Order,self).dispatch(request, *args, **kwargs)

					# @method_decorator(auth) #使用CBV的时候需要把auth当做参数传入django的装饰器类里面
					def get(self,reqeust):
						v = reqeust.COOKIES.get('username111')
						return render(reqeust,'index.html',{'current_user': v})

					def post(self,reqeust):
						v = reqeust.COOKIES.get('username111')
						return render(reqeust,'index.html',{'current_user': v})

  

posted @ 2018-05-06 01:45  梦中琴歌  阅读(290)  评论(0编辑  收藏  举报