cookie的存取操作
# 1、设置Cookies# response.set_cookie("cookie_key","value")# 2、获取Cookies# value = request.COOKIES["cookie_key"]# 3、删除Cookies# response.delete_cookie("cookie_key",path="/",domain=name)# 4、检测Cookies# if "cookie_name" is request.COOKIES :# 5、response.set_cookie() 传递一些可选的参数 描述# 参数 缺省值 描述# max_age None cookies的持续有效时间(以秒计),如果设置为 None cookies 在浏览器关闭的时候就失效了。# expires None cookies的过期时间,格式: "Wdy, DD-Mth-YY HH:MM:SS GMT" 如果设置这个参数,# 它将覆盖 max_age 参数。# path "/" cookie生效的路径前缀,浏览器只会把cookie回传给带有该路径的页面,这样你可以避免将# cookie传给站点中的其他的应用。# 当你的应用不处于站点顶层的时候,这个参数会非常有用。# domain None cookie生效的站点。你可用这个参数来构造一个跨站cookie。如, domain=".example.com"# 所构造的cookie对下面这些站点都是可读的: www.example.com 、 www2.example.com 和# an.other.sub.domain.example.com 。# 如果该参数设置为 None ,cookie只能由设置它的站点读取。# secure False 如果设置为 True ,浏览器将通过HTTPS来回传cookie。
代码示例:
from django.template import Contextfrom django.http import HttpResponsefrom django.http import HttpResponseRedirectimport datetimedef set_user(request,hour=0,name="admin"): dt = datetime.datetime.now() + datetime.timedelta(hours = int(hour)) html ="设置用户%s为登录回话,过去时间:%s" % (name,str(dt)) response = HttpResponse(html) response.set_cookie("username",name,expires=dt) return responsedef show_user(request): html = "" if "username" in request.COOKIES : name = request.COOKIES["username"] if name == "admin": html = "用户%s 的Cookies 没有超时" % name if name == "loker" : html = "用户%s 的Cookies 没有超时" % name else: dt = datetime.datetime.now() + datetime.timedelta(hours = int(1)) name ="loker" html ="用户的Cookies 已经超时\n设置用户%s为登录回话,过去时间:%s" % (name,str(dt)) response = HttpResponse(html) response.set_cookie("username",name,expires=dt) return response response = HttpResponse(html)
session的存取操作:
# 1、设置Sessions值# request.session['session_name'] ="admin"# 2、获取Sessions值# session_name = request.session["session_name"]# 3、删除Sessions值# del request.session["session_name"]# 4、检测是否操作session值# if "session_name" is request.session :
示例代码:
from django.template import Contextfrom django.http import HttpResponse#设置Sessions值def set_session(request,name=""): # if "username" in request.session : # del request.session['user_name'] request.session['user_name'] =name return HttpResponse("Set a session key:%s value:%s"% ("username",name))def del_session(request): if "user_name" in request.session : del request.session['user_name'] return HttpResponse("Clear an item from the session")#查看Sessions值def show_session(request): html = "" if "user_name" in request.session : name = request.session["user_name"] if name == "admin" : html = "Django site administration | Get a session value:%s" % (str(name)) elif name=="lhj588": html = "Django site |Get a session value:%s" % (str(name)) elif not name: html = "Django site |Get a session value is null" return HttpResponse(html) else: return HttpResponse("Session is null") #set_session(request,"loker")
优缺点比较:
cookie:
# 1、Cookies是以字典方式存储,(Key—>Value的键值对方式存储),访问是只要访问Session的键# 就可以得到键对应的Value# 如果:value = response.set_cookie("cookie_key","value")# 2、存储到客户端# 优点:# 数据存在在客户端,减轻服务器端的压力,提高网站的性能。# 缺点:# 1、安全性不高:在客户端机很容易被查看或破解用户回话信息
session:
# 优点:数据存储相对比较安全,数据交换方便。# 缺点:如果存储数据多,访问量大时,比较消耗服务器端资源,导致网站整体性能下降。