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})