Django 之 Cookie & session(初学者必看)

欢迎访问个人博客http://www.jkraise.top

Django 之 Cookie & session

Cookie & session

  1. 设置 Cookie

  2. from datetime import datetime,timedelta
    form django.views import View
    class BooksView(View):
        '''
        测试模板
        http://127.0.0.1:8000/books/
        '''
        def get(self, request):
            # 获取所有的图书
            book = BookInfo.objects.all()
            # 构造上下文
            context = {
                'books':books
            }
            # 使用上下文渲染'book.html', 并返回个客户端
            response = render(request, 'book.html', context)
            # 设置cookie
            ''' 
            	参数1 key名,  
            	参数2 value, 
            	max_age= 设置过期时间,单位是秒
            '''
            response.set_cookie('name', 'itcast', max_age=14 * 24 * 3600)
            
            ''' expires 设置过期时间,是从现在的时间开始到那个时间结束 '''
        	# response.set_cookie('name', 'tong', expires=datetime.now()+timedelta(days=14))
            return response
            
            
    
  3. 在这里插入图片描述

class GetCookie(View):
    def get(self, request):
        name = request.COOKIES.get('name')
        print('name =',name)   # tong
        
  1. 在这里插入图片描述

Session

  • 在设置中 查看子应用 处理 session 开启没

在这里插入图片描述

  • 处理session 的中间件

在这里插入图片描述

  • 在视图函数中 request 对象设置 session
    -在这里插入图片描述

  • 读取数据

  • 在这里插入图片描述

  • 清除 Session 的方式

  • #  删除 值的部分
    request.session.clear()
    # 清空 session 整个数据
    request.session.flush()
    # 删除某个key&value
    del request.session['key']
    
cookie遇到 的一些问题

报错 return str(self).encode(‘iso-8859-1’)

  • cookie的 value 为 中文 会遇到编码

    • 案列

      • import json
        
        from django.http import HttpResponse
        
        
        ''' cookie 添加视图 类'''
        class TestSC(View):
            def get(self, request):
            	        if 'name' in request.session and 'weight' in request.session:
        
                    name = request.session['name']
                    weight = request.session['weight']
        
                if 'num' in request.COOKIES and 'age' in request.COOKIES:
                    num = request.COOKIES['num']
                    age = request.COOKIES['age']
        
                    #  这里依旧 使用 json.loads()  #进行反序列 化操作
                    print(name, weight, json.loads(num), age)
        			#  打印结果 xiaoming 135 '3年2班' '10'
                    del request.COOKIES['num']
                    return HttpResponse('ok')
        
                return HttpResponse('cookie---失效')
        
        
        
            def post(self, request):
                # 从from 表单 获取 num     num='3年2班'
                #  1. json.dumps 进行序列化
                num = request.POST.get('num')
                num = json.dumps(num)
        
                # num = json.dumps(request.POST.get('num'))
                age = request.POST.get('age')
        
                # session 存入数据
                request.session['name'] = 'xiaoming'
                request.session['weight'] = '135'
        
                hep = HttpResponse('添加cookie -----')
        
                #  2. 设置cookie 成功, 编码问题解决
                hep.set_cookie('num', num)
                hep.set_cookie('age', age)
                return hep
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值