Django——cookie(登录状态)
cookie
由服务器下发,保存在本地浏览器上的一组组键值对。
-
特点:
- 用于在本地浏览器中保存用户信息使用
- 由服务器让浏览器进行设置的
- 下次再访问时,自动携带
- 保存在网页的请求体中
- 是在http协议中使用的
-
常用功能:
- 登录信息
- 保存浏览习惯
-
网页中显示的位置:


-
使用cookie:
from django.views import View
#使用装饰器来使用cookie
def login_required(func):
def inner(request,*args,**kwargs):
if request.COOKIES.get('is_login') != '1': #判断是否存在cookie
url = request.path_info #获取当前用户需要访问的页面
return redirect(f'/login/?return_url={url}') #将用户需要登录的页面进行填充,然后登录完成后,将其原路返回。
ret = func(reqeust,*args,**kwargs)
return ret
return inner
@login_required
class login(View):
def get(self, request,*args,**kwargs):
return render(request, "login.html")
def post(self, request,*args,**kwargs):
username = request.POST.get('username')
pwd = request.POST.get('pwd')
if username == 'zhao' and pwd == 'abc':
get_url = reqeust.GET.get('return_url') #将用户需要访问的页面进行提取
if not get_url:get_url='/index/'
ret = redirect(get_url) #返回用户需要访问的页面,如果没有将访问首页
ret.set_cookie('is_login':'1') #这里就是需要设置的键值对,并要求浏览器带有该键值对进行后续访问。
return ret
return render(reqeust,'lgoin.html',{'error':'用户名密码错误'})
@login_required
def index(request):
return redirect('/index')
@login_required
def home(request):
return redirect('/home')
创建好cookie后,用户发送的请求认证成功后,服务器会要求浏览器下一次带有cookie标签来访问。


后续的重定向后,将会带有cookie进行访问
