djang-session
1.cookie
1、获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 参数: default: 默认值 salt: 加密盐 max_age: 后台控制过期时间 2、设置Cookie: rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,value,...) rep.set_signed_cookie(key,value,salt='加密盐',...) 参数: key, 键 value='', 值 max_age=None, 超时时间 expires=None, 超时时间(IE requires expires, so set it if hasn't been already.) path='/', Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问 domain=None, Cookie生效的域名 secure=False, https传输 httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖) 由于cookie保存在客户端的电脑上,所以,JavaScript和jquery也可以操作cookie。 <script src='/static/js/jquery.cookie.js'></script> $.cookie("list_pager_num", 30,{ path: '/' });
2.session
1.views.py from django.shortcuts import render,redirect,HttpResponse # Create your views here. def login(request): if request.method == "GET": return render(request,'login.html') elif request.method == "POST": user = request.POST.get('user') pwd = request.POST.get('pwd') if user =='root' and pwd=='123': #验证成功后要做三件事儿: #生成随机字符串 #写到用户浏览器cookie中 #保存到session中 #在随机字符串对应的字典中设置相关内容 request.session['username'] = user request.session['is_login'] = True if request.POST.get('rmb',None) == '1': request.session.set_expiry(10) #设置超时时间 #上面将会在服务端session字典中添加一条,session保存在数据库中 # session={ #afadasd:{ # 'username' = 'root' #}, #adasfsadf:{ # 'is_login':True, # 'user':'', # 'nid' :'', # .... # } return redirect('/index/') else: return render(request,'login.html') def index(request): #获取当前用户的随机字符串 #根据随机字符串获取对应信息 if request.session.get('is_login',None): #request.session['is_login'] 不存在直接报错 return render(request,'index.html') else: return HttpResponse('ERROR!') #获取 #request.session['k1'] #request.session.get('k1',None) #设置 #request.session['k1'] = 123 #request.session.setdefault('k1',123) #存在则不设置 #删除 #del request.session['k1'] #所有键、值、键值对 # request.session.keys() # request.session.values() # request.session.items() #以上返回键、值、键值对的列表 # request.session.iterkeys() # request.session.itervalues() # request.session.iteritems() #以上分别返回key,value,(key,value)元祖,只是不在是返回列表,而是一个迭代器 #request.session.session_key #后去当前用户的session随机字符串 #request.session.clear_expired() #将所有session失效日期小于当前日期的数据删除 #request.session.exists("session_key") #检查用户session的随机字符串在数据库中是否存在 #request.session.delete("session_key") 删除当前用户的所有session数据 #request.session.clear 注销用户的时候使用 #request.session.set_expiry(value) # *如果vlaue是个整数,session会在value秒后失效 # *如果value是个datatime或timedelta,session会在这个时间后失效 # *如果value是0,用户关闭浏览器session就会失效。 # *如果value是None,session会依赖全区session失效策略。 def logout(request): request.session.clear() return redirect('/login/') #配置session存储位置 #在setting.py中输入: #1.数据库存储 # * SESSION_ENGINE = 'django.contrib.sessions.backends.db' -->session存储在数据库里 #2.cache存储 # * SESSION_ENGINE = 'django.contrib.sessions.backends.cache' ---->存储在缓存里 # SESSION_CACHE_ALIAS = 'default' # CACHES = { # 'default':{ # 'BACKEND':'django.core.cache.backends.memcached.MemcachedCache', # 'LOCATION':[ # '1.1.1.1:11211', # '1.1.1.2:11211', # ] # } #' default2':{ # 'BACKEND':'django.core.cache.backends.memcached.MemcachedCache', # 'LOCATION':[ # '1.1.1.3:11211', # '1.1.1.4:11211', # ] # } # } #3.文件存储: #SESSION_ENGINE='django.contrib.sessions.backends.file' #SESSION_FILE_PATH = None 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址 #4.数据库+缓存 #SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' #5.加密cookie session #SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' #Session通用配置 #SESSION_COOKIE_NAME = "sessionid" #Session的cookie保存在浏览器上时的key #SESSION_COOKIE_PATH = '/' #Session的cookie保存的路径(默认) #SESSION_COOKIE_DOMAIN = None #Session的cookie保存的域名(默认) #SESSION_COOKIE_SECURE = False #是否Https传输cookie(默认) #SESSION_COOKIE_HTTONLY = True #是否Session的cookie只支持http传输(默认) #SESSION_COOKIE_AGE = 109600 #Session的cookie失效日期(2周)(默认) #SESSION_EXPIRE_AT_BROWSER_CLOSE= False #是否关闭浏览器使得session过期(默认) #SESSION_SAVE_EVERY_REQUEST = False #是否每次请求都保存Session,默认修改之后才保存 2.login.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/login/" method="POST"> <p><input type="text" name="user"/></p> <p><input type="text" name="pwd" /></p> <p><input type="text" name="rmb" /></p> <p><input type="submit" value="提交"></p> </form> <a href="/logout/">注销</a> </body> </html> 3.index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>{{ request.session.username }}</h1> <a href="/logout/">注销</a> </body> </html> 4.logout.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>logout</title> </head> <body> </body> </html> 5.urls.py from django.conf.urls import url from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.index), url(r'^login/', views.login), url(r'^logout/', views.logout), ]
浙公网安备 33010602011771号