首页 Django视频课程 cookies和session介绍和基本使用
pay pay

cookies和session介绍和基本使用

日期: 六月 20, 2023, 5:27 p.m.
栏目: Django视频课程
阅读: 89
作者: Python自学网-村长

摘要: http状态保持:首先要知道HTTP请求是无状态的,每完成一次请求就失效,客户端每次发送请求到服务端就是一次会话

00:00 / 11:00
1x
2x
1.5x
1.25x
1x
0.8x
0.5x
>
django视图方法详解
    1. 第1课:了解Django视图views函数请求和响应
      11分钟
    2. 第2课:django视图HttpRequest请求类常用属性详解
      11分钟
    3. 第3课:HttpRequest GET属性的get()和getlist()方法讲解
      11分钟
    4. 第4课:HttpRequest POST属性的get()方法讲解
      11分钟
    5. 第5课:Django视图响应对象HttpResponse属性和参数讲解
      11分钟
    6. 第6课:HttpResponse头部信息增删改查和判断方法
      11分钟
    7. 第7课:HttpResponseCookies设置方法
      11分钟
    8. 第8课:HttpResponse方法-修改、刷新、判断响应对象主体内容
      11分钟
    9. 第9课:HttpResponse子类使用演示
      11分钟
    10. 第10课:Django render, redirect使用方法
      11分钟
    11. 第11课:cookies和session介绍和基本使用
      11分钟
    12. 第12课:Django开发中cookies的操作方法演示
      11分钟
    13. 第13课:Django开发中session的操作方法演示
      11分钟
    14. 第14课:Django views查询方法filter(),get(),all(),exclude()使用
      11分钟
    15. 第15课:Django视图查询条件过滤器一
      11分钟
    16. 第16课:Django视图查询条件过滤器二
      11分钟
    17. 第17课:Django视图查询条件过滤器三
      11分钟
    18. 第18课:Django ForeignKey一对多和多对一查询方法
      11分钟
    19. 第19课:Django视图多值查询(多条件并且查询)方法
      11分钟
    20. 第20课:Django ManyToManyField多对多查询:正查和反查方法
      11分钟
    21. 第21课:Django视图查询结果过滤器使用
      11分钟
    22. 第22课:Django视图聚合查询方法
      11分钟
    23. 第23课:Django视图创建和保存对象create(),save()的用法
      11分钟
    24. 第24课:创建一篇文章使用add()方法添加一个标签
      11分钟
    25. 第25课:创建一篇文章使用add()方法添加多个标签
      11分钟
    26. 第26课:使用remove(),clear()删除文章指定或所有标签
      11分钟
    27. 第27课:Django视图Q和F对象使用
      11分钟
    28. 第28课:视图中模型实例比较和接口参数处理详解
      11分钟
    29. 第29课:在虚拟环境中运行shell模式
      11分钟
    30. 第30课:shell模式中对django对象进行增删改查操作
      11分钟

http状态保持:首先要知道HTTP请求是无状态的,每完成一次请求就失效,客户端每次发送请求到服务端就是一次会话

想要实现会话保持就需要在客户端或者服务端完成状态数据存储和调用。可以通过cookie和session两种方法存储

cookie:把数据存储在客户端,不建议存储敏感数据,一般客户端只存储一个:session_id
session:把数据存储在服务端并保存一定的时间,

不管是cookie和session,在不同的用户之间都不会共享数据。

    username = '123'
    request.session['name'] = username
    request.session.set_expiry(5)
    print(request.session.get('name'))

session字段:session_key   session_data   expire_date

# 1.启用session
settings.py -->  INSTALLED_APPS  -->  'django.contrib.sessions',  # 一般默认启用
settings.py -->  MIDDLEWARE  -->  'django.contrib.sessions.middleware.SessionMiddleware',  # 一般默认启用

# 2.使用session
启用后在HttpRequest对象中会有session属性:一个键值对对象
get(key, default=None)  # 根据键取session值,如果没有取到session值就是default
clear()  # 清空所有会话
flush()  # 删除当前会话和会话cookie

演示

 静态页面1:login_index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h2>欢迎{{ username }}光临python自学网</h2>
<a href="/login/">登陆</a>
</body>
</html>

静态页面2:login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
   <div>
        <form action="/login_ok/" method="post">
            <!-- 用户名 -->
            <div>
                <input type="text" name="username" id="username" placeholder="请输入您的昵称">
            </div>
            <!-- 密码 -->
            <div>
                <input type="password" name="password" placeholder="输入密码" id="password">
            </div>
            <!-- 提交 -->
            <div>
                <button type="submit" name="submit" value="立即登录" id="submit">立即注册</button>
            </div>
        </form>
    </div>
</body>
</html>
urls.py:
    url(r'^login_index/$', views.login_index),
    url(r'^login/$', views.login),
    url(r'^login_ok/$', views.login_ok),
    url(r'^quit/$', views.quit),
views.py:
def login_index(request):
    # 获取session值,如果没有值就显示xx
    username = request.session.get('name', 'xx')  # 注意这里的name是从session取来的
    return render(request, 'session/index.html', {'username': username})

def login(request):
    return render(request, 'session/login.html')

def login_ok(request):
    username = request.POST.get('username')
    request.session['name'] = username  # 把username作为name的值存入session
    request.session.set_expiry(5)  # 设置session5秒后过期,0表示关闭浏览器失效,None表示永不失效
    return redirect(to='/login_index/')

def quit(request):
    # 退出登陆
    request.session.flush()  # 退出登陆,保留缓存到数据库
    # 注销登陆
    request.session.clear()  # clear()是将缓存全部清空
    return redirect('session/index.html')
    del request.session['']  # 值删除值
    request.session.delete('')  # 删除当前会话的所有Session数据

 

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部