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月前
|
Java API 数据库
Django:从入门到精通
【11月更文挑战第18天】Django是一个由Python编写的高级Web应用框架,以其简洁性、安全性和高效性而闻名。Django最初由Adrian Holovaty和Simon Willison于2003年开发,旨在简化Web应用的开发过程。作为一个开放源代码项目,Django迅速吸引了大量的开发者和用户,成为了Python Web开发领域的重要工具之一。
55 1
|
3月前
|
存储 Shell 数据库
Python编程--Django入门:用户账户(二)
Python编程--Django入门:用户账户(二)
39 2
|
3月前
|
存储 数据库 Python
Python编程--Django入门:用户账户(一)
Python编程--Django入门:用户账户(一)
24 1
|
5月前
|
前端开发 关系型数据库 Python
Django入门到放弃之分页器
Django入门到放弃之分页器
|
5月前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
313 0
|
5月前
|
开发框架 安全 数据库
解锁Django框架神秘面纱!从入门到实战,掌握这些技巧,让你的Web应用秒变高效神器!
【8月更文挑战第31天】Django 是 Python 的明星 Web 开发框架,以其高效、安全及可扩展性著称,适用于构建各类 Web 应用。本文从 Django 基础概念出发,介绍其 MTV 架构,涵盖模型(Model)、模板(Template)、视图(View)等核心组件,并通过示例代码展示实际应用。此外,还将探讨路由配置、管理界面及实战技巧,帮助读者全面掌握 Django,为高效 Web 开发打下坚实基础。
61 0
|
5月前
|
关系型数据库 MySQL 机器人
Django入门到放弃之数据库配置
Django入门到放弃之数据库配置
|
5月前
|
缓存 中间件 数据库
Django入门到放弃之缓存及信号机制
Django入门到放弃之缓存及信号机制
|
5月前
|
前端开发 数据库 数据安全/隐私保护
Django入门到放弃之Auth模块
Django入门到放弃之Auth模块
|
5月前
|
JSON 前端开发 数据安全/隐私保护
Django入门到放弃之CSRF_TOKEN
Django入门到放弃之CSRF_TOKEN