• 欢迎光临~

django之cookie与session

开发技术 开发技术 2022-12-22 次浏览

目录
  • cookie与session简介
  • django操作cookie
  • django操作session

cookie与session简介

"""
回忆:HTTP协议四大特性
	1.基于请求响应
	2.基于TCP、IP作用于应用层之上的协议
	3.无状态
		不保存客户端的状态
	4.无连接
"""
最开始的网站都不需要用户注册 所有人来访问获取到的数据都是一样的
随着互联网的发展很多网站需要指定当前用户的状态

cookie:保存在客户端,记录用户状态相关的信息
session:保存在服务端,记录用户状态相关的信息
ps:session的工作需要依赖于cookie

补充:浏览器有资格拒绝保存服务端发送过来的cookie数据

django操作cookie

案例1:

urls.py:
path('login/',views.login_func),
path('home/',views.home_func),
path('home1/', views.home1_func),
path('home2/', views.home2_func),

views.py:
def login_func(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        if username == 'jason' and password == '123':
            obj = redirect('/home/')
            # cookie信息
            obj.set_cookie('name',username)
            return obj
    return render(request,'loginPage.html')

def login_auth(func_name):
    def inner(request,*args,**kwargs):
        if request.COOKIES.get('name'):
            res = func_name(request,*args, **kwargs)
            return res
        return redirect('/login/')
    return inner

@login_auth
def home_func(request):
    return HttpResponse('home页面 只有登录的用户才可以查看')

@login_auth
def home1_func(request):
    return HttpResponse('home1页面 只有登录的用户才可以查看')

@login_auth
def home2_func(request):
    return HttpResponse('home2页面 只有登录的用户才可以查看')


loginPage.html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <p>username:
        <input type="text" name="username">
    </p>
    <p>password:
        <input type="text" name="password">
    </p>
    <input type="submit" value="提交">
</form>
</body>
</html>

django操作session

程序员灯塔
转载请注明原文链接:django之cookie与session
喜欢 (0)