您的位置:首页 > 编程语言 > Go语言

django处理cookies和session

2013-01-21 22:58 288 查看
cookie和session是个啥,鬼畜都知道,所以不说鸟。直接开记录在djano框架下面如何操作cookie和session。

存取cookies

读取cookies很简单,因为读取cookies可以使用HttpResquest,每一个HttpResquest对象都有一个COOKIES对象,可以用它读取任何浏览器发送给视图的cookies。

因为每个视图函数的第一个参数都是request,其实它就是一个HtppResquest对象,所以直接使用request.COOKIES读取cookies就好。

写COOKIES就使用HttpResquest对象的set_cookie()方法,set_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,那么关闭浏览器时候,就会失效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Django