python的session和cookie的一些问题

我在使用django测试session和cookie的时候出现一个session无法设置的错误:

     我建议你看下那个settings.py中有个MIDDLEWARE_CLASSES,你的有可能是MIDDLEWARE 你注意看一下

 

cookies测试

def set_cookies(request):
    response = HttpResponse('设置cookie')
    response.set_cookie('num',1)
    return response

def get_cookies(request):
    num = request.COOKIES['num']
    return HttpResponse(num)

session测试

def set_session(request):
    request.session['username'] = 'smart'
    request.session['age'] = 24
    return HttpResponse('设置session')

def get_session(request):
    username = request.session['username']
    age = request.session['age']
    return HttpResponse(username + '---'+ str(age))

 

有一个问题就是当我用ajax发送请求的时候,我们响应的时候应该用的JsonResponse,返回的是json数据,但是我们的cookie是设置在HttpResponse中的,但是不能两个同时都返回,我的想法是:将要返回的数据都放在一个对象中,然后返回给前端,通过前端设置到cookie中,这样解决。但是session是可以解决问题的,我只是讨论下cookie。

from django.shortcuts import render, redirect
from django.http import JsonResponse,HttpResponse
from django.views.decorators.csrf import csrf_exempt

 

@csrf_exempt
def login(request):
    # 1.获取传递过来的用户名和密码 从POST中获取数据就是request.POST.get('username')
    username = request.POST.get('username')
    password = request.POST.get('password')
    remember = request.POST.get('remember')
    # 2.校验用户名和密码
    if username == 'admin' and password == '123':
       response = HttpResponse()
       # 如果选择了记住用户名 但是这个不知道怎么响应 能想到的办法就是响应回js 在js设置cookie
       if remember == '1':
           response.set_cookie('username', username, max_age=7 * 24 * 3600)

       # 设置session 当我们输入了下次就不用输入了直接登录

       request.session['isLogin'] = True
       request.session['username'] = username
       request.session['password'] = password
       return JsonResponse({'res':1})
    else:
       return JsonResponse({'res':0})

 

def login_html(request):
   if 'isLogin' in request.session:
        return render(request,'testAjax/index.html','username':request.session['username']})
   else:
        return render(request,'testAjax/login.html',{'username':''})

 

def index(request,username):
    return render(request,'testAjax/index.html',{'username':username})

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值