django处理cookies和session

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,那么关闭浏览器时候,就会失效。

相关文章
相关标签/搜索