cookie 与 session

2023-12-14 23:40:26

参考: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,如下图:

文章来源:https://blog.csdn.net/qq_40384309/article/details/134842577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。