zoukankan      html  css  js  c++  java
  • Django中的cookie和session

    cookies

      客户端浏览器上的一个文件

    {'user':'xiaoyanzi'}
    

      获取cookie:

    request.COOKIES.get('username')
    

      写cookie:

    #设置cookie,关闭浏览器失效
    			response = render(request,'index.html')
    			response = redirect('/index/')
    			response.set_cookie('key','value')
                            return response
    

      cookies参数

    #cookie参数:
    			 max_age = None #超时时间(秒)
    			 expires = None #超时时间(datatime)
    					import datetime
    					current_data = datetime.datetime.utcnow()
    					current_data +=datetime.timedelta(seconds=5)
    					res.set_cookie('uname','aa',expires=current_data)
    					
    			path = '/'			#cookie生效的路径,/表示根路径
    			domain = None		#生效的域名
    			secure = False			#https传输
    			httponly = True		#仅http传输,js获取不地道
    

      客户端操作cookie:

        使用jquery插件:jquery.cookie.js

    $.cookie('key',value,{'path':'/user_rlist/'})
    

      密文cookie:

                            obj.set_signed_cookie(salt='hhh')
    	        	request.get_signed_cookie(salt='hhh')            
    

      

    session

      a.Session 原理     

        session是保存在服务器端的键值对。

            session = {
    			'随机字符串1':{
    				'is_login':True,
    				'user':'admin',
    				...
    			
    			}
    			'随机字符串2':{
    				'is_login':True,
    				'user':'admin',
    				...
    			
    			}
    		
    		}
    

      

      b.Cookie和Session对比

        cookie是保存在用户浏览器端的键值对     

        session是保存在服务器端的键值对

        session依赖于cookie,发给客户端只有一条cookie

        基于cookie做用户验证时,不放敏感信息

      c.Session配置(缺少cache)

        操作流程:

        #生成随机字符
        #写到用户浏览器cookie
        #保存到session中
        #在随机字符串对应的字典中设置相关内容

        这四步操作只用如下命令就完成了:

                            request.session['username'] = user
    			request.session['is_login'] = True            

        配置前准备:

                    python manage.py makemigrations
    		python manage.py migrate            
    

      操作:

                                            #获取当前用户的随机字符串
    					#根据随机字符串获取对应信息
    					if request.session['is_login']:
    						return HttpResponse('ok')
    				
    				
    					request.session.setdefault('k1',123)  #存在则不设置
    					request.session.get['k1',None]
    					del request.session['k1']
    					
    					#用户session的随机字符串
    					request.session.session_key
    					#讲所有session失效日期小于当前日期的数据删除
    					request.session.clear_expired()
    					#检查用户session的随机字符串 在数据库中是否存在
    					request.session.exists('session_key')
    					#删除当前用户的所有session数据
    					request.session.delete('session_key')
    					request.session.clear()
    					#设置session超时时间
    					request.session.set_expiry(60*60)       

      配置文件中设置默认操作,在settings中设置:

    SESSION_COOKIE_NAME = 'sissionid'        #客户端cookie的id名
    SESSION_COOKIE_PATH = '/'               #session的cookie保存路径
    SESSION_COOKIE_DOMAIN = None     #session的kookie保存的域名
    SESSION_COOKIE_SECURE = False      #是否https传输cookie
    SESSION_COOKIE_HTTPONLY = True    #是否只支持http传输
    SESSION_COOKIE_AGE = 1209600       #超时时间为两周
    SESSION_AT_BROWSER_CLOSE = False     #是否关闭浏览器就过期
    SESSION_SAVE_EVERY_REQUEST = False    #是否每次请求都保存Session
        
    

      session支持设置cookie储存位置,在settings中设置:

    SESSION_ENGINE = 'django.contrib.sessions.backends.db'	#数据库
    SESSION_ENGINE = 'django.contrib.sessions.backends.cache' #缓存
    SESSION_CACHE_ALIAS = 'default'    #cache链接的名字
    
    ps:chche也有多个链接:
    CACHES = CACHES = {
    					'default':{
    							'BACKEND':'', #引擎
    							'LOCATION':'my_cache_table' #数据库表
    							'TIMEOUT':300 #超时时间
    							'OPTIONS':{
    								'MAX_ENTRIES':300, #缓存最大个数
    								'CULL_FREQUENCY'3, #剔除缓存个数
    								}
    					'MEMOCHACHE':{
    							'BACKEND':'', #引擎
    							'LOCATION':'my_cache_table' #数据库表
    							'TIMEOUT':300 #超时时间
    							'OPTIONS':{
    								'MAX_ENTRIES':300, #缓存最大个数
    								'CULL_FREQUENCY'3, #剔除缓存个数
    								}		
    							
    						}    

    #存在文件中:
    SESSION_ENGINE = 'django.contrib.sessions.backends.file'	#文件
    SESSION_FILE_PATH = os.path.join(BASE_DIR,'cache')

      

  • 相关阅读:
    Restful 的概念预览
    Bootstrap中alerts的用法
    Bootstrap HTML编码规范总结
    Bootstrap中img-circle glyphicon及js引入加载更快的存放位置
    PI数据库
    memcached
    Bootstrap中样式Jumbotron,row, table的实例应用
    js事件监听
    jquery显示隐藏操作
    HDU4521+线段树+dp
  • 原文地址:https://www.cnblogs.com/crazytao/p/7787506.html
Copyright © 2011-2022 走看看