cookie和session是个啥,鬼畜都知道,因此不说鸟。直接开记录在djano框架下面如何操做cookie和session。python
存取cookiesweb
读取cookies很简单,由于读取cookies可使用HttpResquest,每个HttpResquest对象都有一个COOKIES对象,能够用它读取任何浏览器发送给视图的cookies。数据库
由于每一个视图函数的第一个参数都是request,其实它就是一个HtppResquest对象,因此直接使用request.COOKIES读取cookies就好。django
写COOKIES就使用HttpResquest对象的set_cookie()方法,set_cookie有一些可选参数来指定一些特殊操做。浏览器
session操做cookie
开启session(他是经过一个中间件和一个模型来实现的)。session
1.编辑MIDDLEWARE_CLASSES,确保里面已经包含了django.contrib.sessions.middleware.SessionMiddleware。框架
2.确认INSTALLED_APPS,确保里面已经含有一个叫django.contrib.sessions的鬼畜。函数
其实这两项,通常默认就有了,前提是你的项目是用python manage.py startproject mysite来建立的。测试
视图中使用session
SessionMiddleware被激活之后,每一个视图函数的第一个参数request(也就是HttpResquest对象)都有一个session属性,它和cookie同样,也是个字典型的对象,能够像使用普通字典那样使用。
在操做session时候的一些忌讳:
1.使用正常的的字符串来访问字典,而不是整数,对象,或者其余什么很讨厌的东西。
2.key值最好不要使用下划线来命名,由于有些是保留的,可是通常也用不到。
3.不要用一个新对象来替代request.session。
4.不要向request.session中存属性。
测试COOKIE
固然鸟,有些贱人就是喜欢关闭cookie,因此做为蛋疼的web开发者们,想在人家机器上存储一个cookie都得先test一下。
可使用request.session.set_test_cookie()来测试,让后在其余的视图中使用request.session.test_cookie_worked(),两次测试是不在同一个视图函数中的,为何要这样,跟cookie的工做原理有关。
delete_test_cookie能够用来删除用于测试而设置的cookie。
在视图以外使用session
咱们可使用django的数据库API来存取session,咱们使用get_decoded来读取实际的session数据。
有效期
若是SESSION_EXPIRE_AT_BROWSER_CLOSE设置为false,那么cookie在浏览器中保存周期是SESSION_COOKIE_AGE秒。若是设置为true,那么关闭浏览器时候,就会失效。