`

小谈django 的 cookie和session

 
阅读更多

本文针对django1.4

 

周末小闲在家研究了下django的 cookie 和 session,所以写点笔记记录下。


我们先从session 讲起:


如果你想用django自带的session库又一下几点选择


首先你要选择一种session的存储模式:


a)database-backed session              存数据库

b)cached sessions                           存缓存

c)use file-based sessions         存文件

d)cookie-based sessions                  存cookie


其实在cached sessions   还有2种选项(只基于缓存和同时基于缓存和数据库)。


为了演示方便我就挑了 a方案


------------database-backed session  步骤


1 在settings.py的INSTALLED_APPS 中添加一条'django.contrib.sessions'

2 在settings.py 中 DATABASES 的ENGINE 用了 django.db.backends.sqlite3 ,NAME 就随便填了一个文件地址/root/test.db 

3 执行  manage.py syncdb 在数据库中创建seesion的表

 

在view中获取session和修改session信息

 

 

def test(request):
       #获取用户session中的uid属性
       uid = request.session.get('uid',None)
       if uid:
             print 'session uid:',uid
       else:
             #如果session中没有uid就随机生成一个
             request.session['uid'] = random.random()
 

 


http请求是不带前后语境的,server本身是不知道你是那个用户,你是否是登陆状态。而cookie(客户端)和session(服务器端)的联合就能解决这个麻烦,django默认的做法是在用户第一次访问服务器时会在浏览器 对应host下的cookie中生成一个session的字段,其对应的值是一个加密过的字符串,这个我们可以在浏览器中看到,当然这个sessionid 肯定是唯一的。如下图:

 

 

session

 

 

服务器根据这个唯一的sessionid就可以在数据库中检索到对应用户的信息了,所以一个用户的状态都可以以 key value的状态存储在服务器的session里。




接下来我们讲cookie,这个就相对简单了,在前面的session讲解中已经出现了cookie (就是上面的 sessionid),它跟session一样也是key value结构存储的,不过它存在客户端的浏览器中,没一个hostname下一般会有很多cookie存在。


在上面的例子中我们如果手挡将sessionid 这个cookie删除,然后再去访问网站,就会给你生成一个新的,而你无法继续享受之前的sessionid在服务器端中保存的seesion信息了。


上面的sessionid是django帮你自己生成的,作为用户在服务器端中session的唯一标识,我这里说的用户不是登陆注册里面的用户,在一台电脑上如果你开不通的浏览器,生成的session当然也会不同,但是之后你可以用过网站的登陆系统将这两个不通的sessionid跟你的账号来绑定,这就是为什么比如一个微博账号两个浏览器一起登陆不会冲突了,同时能玩。


当然客户端浏览器中的cookie我们也是可以写点别的信息进去的,一般一个cookie的大小限制在4094个字节。


在view中的使用如下:

 

from django.template import loader ,Context
from django.http import HttpResponse

def main(request):
      #不用模板
      response= HttpResponse('test')
      response.set_cookie('my_cookie','cookie value')
      return response

def main(request):
      #用模板
      response= render_to_response('xxxx.html', {})
      response.set_cookie('my_cookie','cookie value')
      return response
 

 

 

结果如下:

 

 

 

cookie

 

 

 

获取客户端的cookie:

 

 

def mainpage(request):
       #客户端的cookie会随着每次请求以字典的形式都存在request.COOKIES中
       print 'my_cookie',request.COOKIES['my_cookie']
 

 

 

 

更多django 关于 session和cookie的资料可以看这 https://docs.djangoproject.com/en/1.4/topics/http/sessions/

  • 大小: 46.2 KB
  • 大小: 55.8 KB
分享到:
评论

相关推荐

    Python Web框架之Django框架cookie和session用法分析

    在开始详细讨论Django框架下cookie和session的用法之前,需要理解几个基本概念。HTTP协议本身是无状态的,这意味着服务器不会保存任何关于客户端的信息。为了解决这个问题,引入了cookie和session的概念。 1. **...

    django框架之cookie/session的使用示例(小结)

    在Web开发中,Django框架提供了方便的cookie和session管理机制,用于解决HTTP协议无状态的问题。HTTP协议本身不支持会话跟踪,因此需要借助额外的技术,如cookie和session,来实现用户状态的维护。 一、HTTP协议无...

    Django cookie 与 session

    在Web开发中,Django框架提供了对Cookie和Session的处理机制,这些都是为了克服HTTP协议的无状态特性。本文将深入探讨Django中的Cookie与Session,以及如何在实际应用中使用它们。 首先,Cookie是存储在客户端...

    Django中的cookie与session操作实例代码

    在Django框架中,Django提供了方便的API来处理Cookie和Session。下面我们将详细讨论这两个概念以及如何在Django中进行操作。 **Cookie** Cookie是一种在客户端存储数据的小型文本文件,由服务器发送到浏览器,并由...

    Django Session和Cookie分别实现记住用户登录状态操作

    在Django框架中,有两种主要方法可以实现这一功能:Django Session和Cookie。理解这两者的工作原理和如何在Django中使用它们至关重要。 首先,让我们深入了解Cookie。Cookie是由服务器发送到用户浏览器的一小段数据...

    django进阶之cookie和session的使用示例

    Session:Django的Session机制会向请求的浏览器发送cookie字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把session存入到数据库中。 Session依赖于Cookie,如果...

    Django_ORM.zip_Oldboy 3_django_django orm_orm_session

    "Oldboy 3"可能是某种教学系列或者课程的第三部分,专门讲解Django ORM和session的使用。 "django_orm"是Django中的一个重要组成部分,它实现了ORM系统。ORM使得开发者可以将数据库操作与业务逻辑分离,通过Python...

    django框架cookie和session用法实例详解

    ### Django框架中Cookie和Session的用法详解 #### 1. Django框架中Cookie和Session的基本概念 在Django框架中,Cookie和Session是实现Web应用程序用户状态管理的重要机制。它们广泛应用于用户身份验证、页面个性化...

    django-利用session机制实现唯一登录的例子

    Django提供了session和cookie两种方式来实现用户登录状态的持久化。 **1. 配置数据库连接** 在Django项目中,首先需要配置数据库连接,这样应用才能与MySQL数据库交互。在`settings.py`文件中,定义`DATABASES`配置...

    深入探究Django中的Session与Cookie

    在Django框架中,Session和Cookie协同工作,实现用户身份验证和其他会话管理。 Django默认使用Cookie来保存一个称为`sessionid`的键值,这个键对应的是服务器端Session数据的唯一标识。当用户登录时,服务器会生成...

    Django中的cookie和session

    在Django中,`cookie`和`session`是用来实现用户状态跟踪的重要机制,尤其是在Web开发中,由于HTTP协议本身的无状态特性,服务器无法记住不同请求之间的关联信息。为了解决这个问题,开发者通常会借助cookie和...

    Django组件cookie与session的具体使用

    在Django框架中,Cookie和Session是两种重要的会话跟踪技术,用于在Web应用中维持用户状态。本文将详细介绍这两种技术的使用。 首先,会话跟踪技术是Web开发中的核心概念,它允许服务器在多个HTTP请求之间保持用户...

    cookie_session.zip

    DJango框架中cookie、session实际应用,简单的登录、跳转首页的demo。运用到cookie、session技术,初步理解cookie/session在实际当中的实际应用。通过demo实际操作来理解cookie/session

    Django组件之cookie与session的使用方法

    但是,你说你每次上网的时候,只需要登录一下就行了,并没有我说的让你每次都登录,这是会话路径技术帮你记录了你的登录信息,现在我们们就来讲讲Django的会话路径技术cookie和session,实现会话追踪。 二、cookie ...

    Django中的session用法详解

    ### Django中的Session用法详解 #### 一、Session的基本概念 Session是一种常用的技术,用于跟踪用户的活动状态。在Web开发中,服务器与客户端之间本质上是无状态的通信过程,这意味着服务器无法通过HTTP协议记住...

Global site tag (gtag.js) - Google Analytics