def cookie(request): # 设置cookie rep = HttpResponse("aaa") rep = render(request, 'index.html') rep.set_cookie(key, value) rep.set_signed_cookie(key, value, salt='加密的字符') # 带签名的cookie,加密,加密字符或名字随意指定有意义即可 # 解密cookie request.get_signed_cookie('key',salt='加密字符串') # 设置cookie N秒后时效 秒为单位 rep.set_cookie('username11', 'value', max_age=10) # 设置cookie 截止时间生效 import datetime current_date = datetime.datetime.utcnow() current_date = current_date + datetime.timedelta(second=5) rep.set_cookie('username111', 'value', expires=current_date) # 做一个checkbox,选中值,true,把选中值换算成时间,传入设置cookie,就可以实现多久时间免登陆 # 参数: # 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获取(不是绝对,底层抓包可以获取到也可以被覆盖 # document.cookie 获取不到cookie #
def login(request): """ :param request: request.POST.get('username') request.POST.get('password') :return: HttpResponse(json.dumps(result)) """ result = { 'status': '', # 'success' or 'failure' 'error_msg': '', # notes of failure } # handle wrong method if not is_post(request, result): return HttpResponse(json.dumps(result)) username = request.POST.get('username') password = request.POST.get('password') mgr = models.ManagerInfo.objects.filter( username=username, password=password, ) if mgr.count() == 1: result['status'] = 'success' response = HttpResponse(json.dumps(result)) response.set_signed_cookie(key='username', value=username, salt=SALT) return response else: result['status'] = 'failure' result[ 'error_msg'] = 'this user does not exist, or the password is wrong' return HttpResponse(json.dumps(result))
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') obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf") request.get_signed_cookie('username',salt="asdfasdf") return response
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("key", 'value', max_age=10) # 设置cookie,截止时间失效 import datetime current_time = datetime.datetime.utcnow() current_time = current_time + datetime.timedelta(seconds=10) response.set_cookie('key', 'value', expires=current_time) # 带签名的cookie obj = HttpResponse('ok') obj.set_signed_cookie('username', 'kangbazi', salt='asdfasdf') # 加密 request.get_signed_cookie('username', salt="asdfasdf") # 解密 return response
def vote(request): if request.method == "POST": post_data = request.POST.get('vote_data', None) print(post_data) if post_data: # 判断是否是浏览器发送过来的,而不是其他什么程序,这里我们假定只判定苹果电脑 if "Safari" in request.META["HTTP_USER_AGENT"]: print("safari") else: # 如果不是浏览器打开的,就回复这句话 return HttpResponse("请适用正确的方式提交") # 判断是否有cookie,有cookie if request.COOKIES.get('k'): # 有cookie,就不能投票 print("has_cookie") return HttpResponse("已经提交过,请勿重复提交") else: # 没有cookie,种下cookie,并且完成投票 print("no_cookie") rep = HttpResponse('OK') rep.set_signed_cookie('k', '123', salt='123', max_age=86400, path='/vote/') print("set_cookie") # 将投票的内容添加入数据库 vote_number = models.Options.objects.filter( name=post_data).values("vote") vote_number = list(vote_number)[0]["vote"] print("vote_number", vote_number) models.Options.objects.filter(name=post_data).update( vote=vote_number + 1) # 返回正确信息 return rep else: # 返回错误信息 return HttpResponse("网络可能有点儿问题") ret = models.Options.objects.all().values("name", "vote") ret = list(ret) return render(request, 'vote.html', {"ret": ret})