COOKIE的使用
首先设置 COOKIES
USERINFO={
'root':{'password':'root123'},
'zte':{'password':'zte'}
}
def login(request):
if request.method == "GET":
return render(request,'login.html',{'name':'ASDFSDGS'})
if request.method == "POST":
u = request.POST.get('username')
p = request.POST.get('password')
dic = USERINFO.get(u)
if not dic:
return render(request, 'login.html', {'name': '用户不存在'})
if dic['password'] == p:
res = redirect('/hostApp/index/')
res.set_cookie('username',u)
res.set_cookie('password',p)
return res
else:
return render(request, 'login.html', {'name': 'ASDFSDGS'})
在index页面上获取cookie
def index(request):
username = request.COOKIES.get('username')
pwd = request.COOKIES.get('password')
if not username :
return redirect('/hostApp/login/')
cookie的其他参数:
def cookie(request):
#
# request.COOKIES
# request.COOKIES['username111']
request.COOKIES.get('username111')
response = render(request,'index.html')
response = redirect('/index/')
# 设置cookie,关闭浏览器失效
response.set_cookie('key',"value")
# 设置cookie, N秒只有失效
response.set_cookie('username111',"value",max_age=10)
# 设置cookie, 截止时间失效
import datetime
current_date = datetime.datetime.utcnow()
current_date = current_date + datetime.timedelta(seconds=5)
response.set_cookie('username111',"value",expires=current_date)
response.set_cookie('username111',"value",max_age=10)
# request.COOKIES.get('...')
# response.set_cookie(...)
obj = HttpResponse('s')
#加密COOKIES
obj.set_signed_cookie('username',"kangbazi",salt="asdfasdf")
request.get_signed_cookie('username',salt="asdfasdf")
return response
前台设置cookie
$(function(){
var v = $.cookie('per_page_count', {'path': "/user_list/`"});
$('#ps').val(v);
});
function changePageSize(ths){
var v = $(ths).val();
console.log(v);
$.cookie('per_page_count',v, {'path': "/user_list/"});
location.reload();
}
使用装饰器实现用户认证:
- 装饰器
FBV:
def auth(func):
def inner(reqeust,*args,**kwargs):
v = reqeust.COOKIES.get('username111')
if not v:
return redirect('/login/')
return func(reqeust, *args,**kwargs)
return inner
CBV:
from django import views
from django.utils.decorators import method_decorator
@method_decorator(auth,name='dispatch')
class Order(views.View):
# @method_decorator(auth)
# def dispatch(self, request, *args, **kwargs):
# return super(Order,self).dispatch(request, *args, **kwargs)
# @method_decorator(auth) #使用CBV的时候需要把auth当做参数传入django的装饰器类里面
def get(self,reqeust):
v = reqeust.COOKIES.get('username111')
return render(reqeust,'index.html',{'current_user': v})
def post(self,reqeust):
v = reqeust.COOKIES.get('username111')
return render(reqeust,'index.html',{'current_user': v})

浙公网安备 33010602011771号