云图网
  • 业界资讯
  • 技术专区
    • 云计算
    • 人工智能
    • 信息安全
    • 大数据
    • 研发管理
    • 大前端
    • 开源
    • 智能运维
    • 编程笔记
    • WordPress
  • 企业战略规划
  • 下载专区
  • 江湖史
  • 随笔记录
登录 注册
投稿
  1. 云图网首页
  2. 技术专区
  3. 编程笔记

Django入门到放弃之cookies

2022年8月28日 02:17 • 编程笔记

文章目录[隐藏]

  • 1.获取Cookie
  • 2.设置Cookie
  • 3.删除Cookie
  • 4.django中cookie的使用
  • 5.登录认证示例:


1.获取Cookie

request.COOKIES
request.COOKIES['key']
# 获取带签名的cookie
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)  #获取signed类型cookies
      default: 默认值
      salt: 加密盐
      max_age: 后台控制过期时间

2.设置Cookie

rep = HttpResponse(...)
rep = render(request, ...)

rep.set_cookie(key,value,...)
# 带签名的cookie
rep.set_signed_cookie(key,value,salt='加密盐', max_age=None, ...)
return rep
    参数:
      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获取(不是绝对,底层抓包可以获取到也可以被覆盖)

3.删除Cookie

def logout(request):
    rep = redirect("/login/")
    rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值,实质是将浏览器的cookies清空
    return rep

4.django中cookie的使用

# 0 会话跟踪,会话保持
# 1 cookie规范
	-记住:当前网站在浏览器上cookie个数和大小有限制
 	-Cookie大小上限为4KB; 
 	-一个服务器最多在客户端浏览器上保存20个Cookie; 
 	-一个浏览器最多保存300个Cookie;
# 2 django中操作cookie
	-增:obj.set_cookie('key','value')
    -删: obj.delete_cookie('key')  # 设置过期
    -查: request.COOKIES.get('key')
    -改: obj.set_cookie('key','value1')
# 3 带签名的cookie(加盐,加密)
	-增:obj.set_signed_cookie('name','lqz','123')
    -删: obj.delete_cookie('name')  # 设置过期
    -查: request.get_signed_cookie('name',salt='123')
    -改: obj.set_signed_cookie('name','lqz','123')

5.登录认证示例:

def login_auth(func):
    def inner(request,*args,**kwargs):
        is_login = request.COOKIES.get('is_login')
        print(is_login)
        if is_login == 'True':
            res = func(request,*args,**kwargs)
            print('##############################')
            return res
        else:
            
            return redirect('login')
    return inner

@login_auth
def index(request):
        return render(request, 'cookies/index.html')


@login_auth
def home(request):
        return render(request, 'cookies/home.html')



def login(request):
    if request.method == 'GET':
        return render(request, 'cookies/login.html')
    else:
        username = request.POST.get('username')
        password = request.POST.get('password')

        if username == 'bge' and password == '666':
            path = request.GET.get('returnurl')
            if path:
                ret = redirect(path})
            else
	            ret = redirect('index')
            ret.set_cookie('is_login',True)
            return ret
        else:
            return HttpResponse('登录失败')

  

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/282598.html

CookieCookiesDjangokeyloginrequestreturnset入门
赞 (0)
0 0
生成海报
查找导致cup过高的代码方法
上一篇 2022年8月28日 02:16
Django入门到放弃之forms组件
下一篇 2022年8月28日 02:17

相关推荐

  • 12_迭代和递归 2022年8月5日
  • Linux学习常用函数笔记 2022年7月21日
  • Redis-3.0.503 常用操作-01 2022年8月4日
  • python网络爬虫系列教程——python中urllib、urllib2、cookie模块应用全解 2023年12月4日
  • SET NOCOUNT ON 作用 2022年4月18日
  • C/C++ 使用 openssl 进行 AES/ECB/PKCS5Padding 加密解密 2022年8月8日
  • redis核心数据结构与高性能原理 2022年8月21日
  • 【2022-08-16】mysql基础知识(三) 2022年8月17日
  • Linux0.11源码学习(四) 2022年8月23日
  • django中SQL alchemy的使用 2022年4月18日

发表回复

请登录后评论...
登录后才能评论

热门标签

AI (11871) aliyun (95062) Android (10391) c (14594) go (7786) google (20654) html (8304) https (10802) iPhone (21436) jd (7444) linux (18686) MD (8346) microsoft (7561) Phone (21786) python (7226) windows (18482) 人工智能 (9889) 安全 (28526) 开源 (16950) 微软 (13275) 手机 (21138) 游戏 (13254) 百度 (7189) 硬件 (14378) 美国 (20456) 苹果 (10017) 观察 (7533) 谷歌 (8726) 车 (28069) 通信 (7496)
  • 欢迎投稿
  • 隐私政策
  • 使用协议
  • 服务条款
  • 版权声明

Copyright © 2006-2025 YTSO.COM 版权所有 鲁ICP备15002310号-3 Powered by WordPress

免责声明:本站信息来自互联网收集分享,版权归原创者所有,如果侵犯了您的权益,请发邮件给39941211@qq.com通知我们删除.