cookie:饼干. 其实是一份小数据, 是服务器给客户端,并且存储在客户端上的一份小数据
为什么要有这个Cookie:http的请求是无状态。 客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。 为了更好的用户体验,更好的交互 [自动登录],其实从公司层面讲,就是为了更好的收集用户习惯[大数据]
1.键值结构
2.cookie是基于域名安全的,不同域名之间是不可以进行相互的访问的
3.当浏览器请求某一个网站,会将当前网站所有cookie提交给服务器
4.cookie数据不允许存储敏感信息,密码,支付密码
子项目的urls.py中编写路径
url(r'createcookie/',createcookie),
view.py文件中写入以下代码:
def createcookie(request):
#set_cookie(self, key, value='', max_age=None, expires=None, path='/',
# domain=None, secure=False, httponly=False):
response_object = HttpResponse('OK')
response_object.set_cookie('name','xiaowang',max_age=60)
response_object.set_cookie('name1','xiaowang1',max_age=60*60)
return response_object
Response.COOKIES.get(键名)
子项目的urls.py中编写路径
url(r'readcookie/',readcookie),
view.py文件view.py文件中写入以下代码:
def readcookie(request):
#用来获取的是cookie的值,如果不存在,可以设置默认值
#request.COOKIES.get()
print(request.COOKIES.get('name','校长'))
return HttpResponse('读取成功')
子项目的urls.py中编写路径
url(r'deletecookie/',deletecookie),
view.py文件中写入以下代码:
def deletecookie(request):
response = HttpResponse('删除成功')
response.delete_cookie('name1')
return
session:会话 , Session是基于Cookie的一种会话机制。 Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。 Session是,数据存放在服务器端。
如果需要使用数据库存储session,要安装应用
在项目的同名文件夹下的settings.py中MIDDLEWARE内输入:
注意点:在Django项目中,session的引擎没有设置,因为这是默认的存储方式
如果权限不够则sudo开头
在项目的同名文件夹下的settings.py内输入:
可以参考官方文档:https://docs.djangoproject.com/en/2.2/ref/settings/
子项目的urls.py中编写路径
url(r'createsession/',createsession),
view.py文件中写入以下代码:
def createsession(request):
request.session['age']=18
return HttpResponse('session_ok')
Django中的Session有3种存储方式:放在数据库、缓存或者文件系统中,下面分别予以介绍。
将Session存储在数据库中:
如果要将Session存储在数据库中,我们需要将 ’django.contrib.sessions’ 加入到INSTALLED_APPS 变量中。然后运行 manage.py syncdb 在数据库中创建相应的存储Session的数据库表。
将Session存储在缓存中:
如果想获得更好的性能,我们可以将Session保存在缓存中。这里有两种配置方式:一种是设置SESSION_ENGINE 为”django.contrib.sessions.backends.cache” 。这是一种简单配置,Session将之被保存在缓存中,但是不保证Session总是能取到(比如缓存溢出时Session会丢失);另一种方式是设置SESSION_ENGINE 为 “django.contrib.sessions.backends.cached_db”。这种方式下,Session在保存到缓存的同时还会被保存到数据库中,当Django在缓存中找不到Session时,会从数据库中找到。第二种方式会有一点点性能开销,但是安全性和冗余性更好。
将Session存储在文件系统中:
还有一种方式是将Session存储在文件系统中。需要设置SESSION_ENGINE 为”django.contrib.sessions.backends.file”,这时你还需要同时设置SESSION_FILE_PATH 变量,它代表Session文件保存的位置,缺省的设置一般是tempfile.gettempdir(),表示系统的临时目录。这里要确保应用程序对那个目录有读写的权限。
4.这个是混合存取:
django.contrib.sessions.backends.cached_db