django笔记10 cookie整理
感谢武沛齐老师 Alex老师 cookie 没有cookie所有的网站都登录不上 客户端浏览器上的一个文件 {'user':'ljc'} {"user":'zpt'} request.COOKIES.get('..') response.set_cookie('..') 加密 obj = HttpResponse('s') obj.set_signed_cookie('username',"kangbazi",salt="afajkfa") 解密 var w = request.get_signed_cookie('username',salt="afajkfa") import hashlib m = hashlib.md5('fdaf') m.update('afda') 装饰器: def auth(func): #装饰器 def inner(request,*args, **kwargs): v = request.COOKIES.get('username111') if not v: return redirect('/login/') return func(request,*args, **kwargs) return inner FBV: def auth(func): def inner(request,*args, **kwargs): v = request.COOKIES.get('username111') if not v: return redirect('/login/') return func(request,*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) def get(self,request): v = request.COOKIES.get('username111') return render(request, 'index.html', {'current_user': v}) def post(self,request): v = request.COOKIES.get('username111') return render(request, 'index.html', {'current_user': v}) cookie1: request.COOKIES.get('username111') #获取用户端发来的cookie 获取 response = render(request,"index.html") response = redirect('/index/') #设置cookie 关闭浏览器失效(还可以设置超时时间) response.set_cookie('key',"value") #关闭浏览器时 才失效 设置 return response cookie2: request.COOKIES.get('username111') #获取用户端发来的cookie response = render(request,"index.html") response = redirect('/index/') #设置cookie 10秒后会过期 max_age = 10 截止时间失效 response.set_cookie('key',"value",max_age = 10) import datetime current_time = datetime.datetime.utcnow() current_time = current_date + datetime.timedelta(seconds=10) #expires 具体到哪个时间节点 response.set_cookie('key',"value", expires = current_time) return response cookie3: #document.cookie request.COOKIES.get('username111') #获取用户端发来的cookie response = render(request,"index.html") response = redirect('/index/') #设置cookie 关闭浏览器失效(还可以设置超时时间) #path='/'默认的地址 #domain=None 生效的域名 #secure=False https传输 如果是 要设置为true #httponly=True 加上他好一点 在js获取cookie时 获取不到 response.set_cookie('key',"value") #关闭浏览器时 才失效 return response user_info = { 'dachengzi':{'pwd':'123'}, 'kanbazi':{'pwd':'321'}, } def login(request): if request.method =="GET": return render(request,'login.html') if request.method == "POST": u = request.POST.get('username') p = request.POST.get('pwd') dic = user_info.get(u) if not dic: return render(request, 'login.html') if dic['pwd'] == p: res = redirect('/index/') res.set_cookie('username111',u) return res else: return render(request, 'login.html') def index(request): #获取当前已经登录的用户名 v = request.COOKIES.get('username111') if not v: return redirect('/login') return render(request,'index.html',{'current_user':v}) 缓存 中间件 信号 CSRF Admin ModelForm
原谅我这一生不羁放纵爱自由