cookie 与 session

参考:Cookie和Session详解

1、cookie

1.1、从视图函数设置cookie

  login_action视图函数中,添加浏览器cookie;event_manage视图中,从浏览器获取cookie。如下:

# jk_app/views.py 文件
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
def index(request):
        return render(request,"index.html")

def login_action(request):
        if request.method == 'POST':
                username = request.POST.get('username','')
                password = request.POST.get('password','')
                if username == "admin" and password == "admin123":
                        response = HttpResponseRedirect('/jk_app/event_manage/')
                        response.set_cookie('user',username,3600)       # 向浏览器添加cookie,保存时效3600秒
                        return response
                else:
                        return render(request,'index.html',{'error':'username or password error !'})

def event_manage(request):
        username = request.COOKIES.get('user','')       # 读取浏览器的cookie
        return render(request,'event_manage.html',{"user":username}) # 将user的值 和 html页面一起返回

set_cookie()参数说明:

  1. 第一个参数:“user”表示写入浏览器的cookie名;

  2. 第二个参数:cookie的值;

  3. 第三个参数:设置cookie在浏览器中保存的时间,单位为s。

1.2、返回值显示到HTML上

  event_manage.html文件内添加返回参数,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Event Manage Page</title>
</head>
<body>
  <h1> Login Success ! </h1>
    <div >
        <a>嘿! {
  {user}},欢迎登录 </a>
    </div>
</body>
</html>

接口中cookie为:csrftoken=n8CuLrJnvBxXYwfbCTve5lOILhwgKn5r; user=admin

2、session

2.1、从视图函数设置session

# jk_app/views.py 文件
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
def index(request):
        return render(request,"index.html")

def login_action(request):
        if request.method == 'POST':
                username = request.POST.get('username','')
                password = request.POST.get('password','')
                if username == "admin" and password == "admin123":
                        response = HttpResponseRedirect('/jk_app/event_manage/')
                        request.session['user'] = username      # 将session信息记录到浏览器
                        return response
                else:
                        return render(request,'index.html',{'error':'username or password error !'})

def event_manage(request):
        username = request.session.get('user','')      # 读取浏览器的session
        return render(request,'event_manage.html',{"user":username}) # 将user的值 和 html页面一起返回

2.2、生成常用数据表

需要用数据表,来保存sessionID与session的映射关系,Django默认设置了SQLite3数据库,所以暂时不需要配置其它数据库。

  创建django_session表,通过migrate进行数据迁移:python manage.py migrate(同时会生成auth_user表,存放着登录Django管理后台的用户信息。)

2.3、运行项目

  登录成功后,请求头的cookie带上了sessionID,如下图:

相关推荐

  1. CookieSession详解

    2023-12-07 10:12:02       53 阅读
  2. CookieSession、Token的区别联系

    2023-12-07 10:12:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 10:12:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 10:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 10:12:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 10:12:02       20 阅读

热门阅读

  1. 【ML】LSTM应用——预测股票(基于 tensorflow2)

    2023-12-07 10:12:02       40 阅读
  2. ffmpeg 同时采集麦克风和摄像头并录制文件

    2023-12-07 10:12:02       26 阅读
  3. RDMA编程实例rdma_cm API

    2023-12-07 10:12:02       25 阅读
  4. Spring Boot 容器如何根据注解加载发现与管理组件

    2023-12-07 10:12:02       27 阅读
  5. 咨询室游戏

    2023-12-07 10:12:02       34 阅读
  6. Django rest froamwork-序列化关系

    2023-12-07 10:12:02       30 阅读