Django设置、使用Cookie

使用背景:

前端根据用户选择的模块,结合ajax实现局部刷新,进到到具体模块页面后,返回,希望保持到原来选择的模块上,这就需要保存当前选择的模块id;

尝试:

1、使用Js的设置cookie,doucument.cookie = 设置cookie,设置之后,cookie值没有;要在服务器端启动,才能正常设置;不用这个方式;

2、使用Django里面的cookie,实现cookie的设置;需要引入 from django.shortcuts import render, redirect, HttpResponse;

设置cookie

实例化设置cookie的对象,以下三种方式

Req = HttpResponse(...) 或 rep = render(request, ...) 或req=redirect()

rep.set_cookie(key,value,...)

可以增加max_age=10,设置cookie的最大超时时间

获取cookie

c_mode_id = request.COOKIES.get("kw_mode_id")

可以增加判断,如果获取到的cookie为空时,可以设置默认值

使用cookie

通常需要结合获取cookie一起使用,通过将要显示的数据和cookie的值,返回给页面,重新进行渲染

 

实现代码:

def post(self, request):
     req = redirect('keywords')
     req.set_cookie("kw_mode_id", 3) # 设置cookie值
     return req
class testView(View):
    def get(self, request):
        models = Test.objects.filter(status=False).all()
        c_mode_id = request.COOKIES.get("kw_mode_id") # 根据key,获取对应cookie的值
        if c_mode_id is None:
            c_mode_id = 7
        return render(request, 'page/tests.html', {'data': models, 'c_mode_id': int(c_mode_id)})

posted on 2023-02-06 14:10  刚刚好1  阅读(261)  评论(0编辑  收藏  举报

导航