cookie--session

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.


# cookie是客户端浏览器上的键值对
# 原理:是服务器产生,发给客户端浏览器,浏览器保存起来,下次再发请求,会携带这个键值对到服务器
# cookie覆盖:先写一个键值对,后来再写会覆盖
# session,解决cookie不安全的问题,存在服务器上的键值对{随机字符串:{name:lqz,pwd:123}}
# 用session必须跟cookie连用

def login_auth(func):
def inner(request,*args,**kwargs):
url=request.get_full_path()
is_true=request.COOKIES.get('is_true')
if is_true:
res=func(request,*args,**kwargs)
return res
else:
return redirect('/test_cookie/?next=%s'%url)
return inner


def test_cookie(request):
# obj=HttpResponse('ok')
# obj.set_cookie('name','lqz')
# return obj
if request.method=='GET':
return render(request,'login.html')
else:
name=request.POST.get('name')
pwd=request.POST.get('pwd')

if name=='lqz' and pwd=='123':
next=request.GET.get('next')
print(next)
if next:
obj=redirect(next)
obj.set_cookie('is_true',True)
return obj
else:
return HttpResponse('登录成功')
else:
obj=HttpResponse('用户名或密码错误')
return obj

@login_auth
def order(request):


return HttpResponse('订单页面')

# 加盐的cookie
def salt_cookie(request):
obj=HttpResponse('ok')
# 加盐,123是个密码,解cookie的时候需要他
# obj.set_signed_cookie('name','lqz',salt='123')
# max_age=5,5秒之后失效
obj.set_cookie('name','lqz',max_age=5)
return obj


def delete_cookie(request):
obj=HttpResponse('ok')
# 指定删除名字是name的cookie
obj.delete_cookie('name')
return obj





from django.shortcuts import render,HttpResponse

# Create your views here.


def set_session(request):
# 随机字符串跟浏览器相关,数据跟账号相关
# 1.生成随机字符串:dadsad
# 2.去数据库存储
# 随机字符串 值(字典形式) 超时时间
# dadad {'name':'lqz','age':18,'sex':'man} 超时时间内

# 3.写入scookie(set_cookie('sessionid','随机字符串'))

request.session['name']='lqz'

request.session['age ']=18
return HttpResponse('ok')


def get_session(request):
# 取session 取name这个字段对应的值
# 正常流程
# 去cookie中取出随机字符串
# 去session那个表查询,取出session_data的数据,解密成字典,然后取name的值

name=request.session['name']
print(name)
return HttpResponse('get session')



# 删除值
# request.ses sion.delete(),取出cookie,随机字符串,去数据库删除随机字符串是当前值得记录
# request.session.flush(),即删数据库又删浏览器的cookie



原文地址:https://www.cnblogs.com/fushaunglin/p/10003621.html