Django入门到放弃之cookies

简介: Django入门到放弃之cookies

1.获取Cookie

1

2

3

4

5

6

7

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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

1

2

3

4

def logout(request):

    rep = redirect("/login/")

    rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值,实质是将浏览器的cookies清空

    return rep

4.django中cookie的使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# 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.登录认证示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

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('登录失败')


相关文章
|
2月前
|
测试技术 API 数据库
Django测试入门:打造坚实代码基础的钥匙
Django测试入门:打造坚实代码基础的钥匙
34 3
|
20天前
|
前端开发 关系型数据库 Python
Django入门到放弃之分页器
Django入门到放弃之分页器
|
1月前
|
前端开发 网络协议 物联网
Django Web:搭建Websocket服务器(入门篇)
Django Web:搭建Websocket服务器(入门篇)
36 1
|
20天前
|
关系型数据库 MySQL 机器人
Django入门到放弃之数据库配置
Django入门到放弃之数据库配置
|
20天前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
20天前
|
前端开发 数据库 数据安全/隐私保护
Django入门到放弃之Auth模块
Django入门到放弃之Auth模块
|
20天前
|
JSON 前端开发 数据安全/隐私保护
Django入门到放弃之CSRF_TOKEN
Django入门到放弃之CSRF_TOKEN
|
20天前
|
前端开发 中间件 索引
Django入门到放弃之中间件
Django入门到放弃之中间件
|
20天前
|
缓存 数据库 数据安全/隐私保护
Django入门到放弃之session
Django入门到放弃之session
|
20天前
|
前端开发 网络协议 数据库
Django入门到放弃之forms组件
Django入门到放弃之forms组件