标签:return get request django session cookie login def
一cookie
什么是cookie
cookie是浏览器的技术,Cookie具体指的是一段小信息,它是服务器发送出来存储在浏 览器上的一组组键值对,可以理解为服务端给客户端的一个小甜点,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息。
cookie图解
django中操作cookie
Ctrl + Shift + del三个键来清除页面缓存和cookie,将来这个操作你会用的很多。
设置Cookie
rep = HttpResponse(...) rep = render(request, ...) rep.set_cookie(key,value,...) rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)
参数:
key, 键
value='', 值
max_age=None, 超时时间
expires=None, 超时时间(IE requires expires, so set it if hasn't been already.)
path='/', Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问
domain=None, Cookie生效的域名
secure=False, https传输
httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
获取Cookie
request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
参数:
default: 默认值
salt: 加密盐
max_age: 后台控制过期时间
代码实例:
def login(request): ''' 登录鉴权设置cookie :param request: :return: ''' if request.method=='GET': return render(request,'login.html') else: username = request.POST.get('uname') password = request.POST.get('pwd') if username=='zxb' and password =='123': ret = redirect('index') ret.set_cookie('is_login',True) return ret else: return redirect('login') def index(request): ''' 进入页面校验cookie :param request: :return: ''' is_login= request.COOKIES.get('is_login') print(is_login,type(is_login)) if is_login=='True': return render(request, 'index.html') else: return redirect('login') def home(request): ''' 进入页面校验cookie :param request: :return: ''' print(request.COOKIES) is_login = request.COOKIES.get('is_login') if is_login == 'True': return render(request,'home.html') else: return HttpResponse("请登录")
上面这样写有点low,每个都要获取cookie去校验,我们可以通过装饰器来判断。这样看是不是简洁了许多
def loginauth(f): def inner(request,*args,**kwargs): is_login = request.COOKIES.get('is_login') if is_login == 'True': ret = f(request,*args,**kwargs) return ret else: return redirect('login') return inner @loginauth def index(request): return render(request,'index.html') @loginauth def home(request): return render(request,'home.html')
标签:return,get,request,django,session,cookie,login,def 来源: https://www.cnblogs.com/zhuxibo/p/14677026.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。