- 浏览: 307074 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (69)
- python (31)
- android (1)
- 软件安装 (3)
- 运维监控 (5)
- pycurl (1)
- RFC (0)
- RFC,IRC,翻译 (1)
- ubuntu 打开 22端口 (1)
- redis (3)
- 缓存 (1)
- 多进程,共享数据,通信, (1)
- django (4)
- cookie (1)
- session (1)
- nodejs npm (1)
- mongodb (2)
- tornado (2)
- 异步 (1)
- seo (0)
- seo,错误,笔记 (1)
- sysv-rc-conf (1)
- ubuntu (2)
- 开机启动 (1)
- supervisor (1)
- 进程 (1)
- twitter tweepy (1)
- Bootstrap (1)
- Bootstrap-maxlength (1)
- 微信 (1)
- 公共号 (1)
- 框架 (1)
- mac,virtualbox,xp (1)
- beef (1)
- ruby1.8 (1)
- ruby1.9 (1)
- rvm (1)
- subline (1)
- egret (1)
- ssl (1)
最新评论
-
koreyoshi:
那要是周排名月排名呢
redis set轻松做排行榜应用 -
xuddk727:
仁兄能否将affinity_0.1.0发我一份?在我这该网站无 ...
python 绑定进程在某个cpu上执行-affinity -
mimicom:
wifi 调试 adb shell 的话 是 transpor ...
android adb shell 笔记 -
郭玉成:
一定要有SGMLParser.__init__(self) ...
用python解析html--SGMLParser -
jakejone:
支持一下,我刚开始学python,感觉不错,就是文档太少了。
python开发环境Eclipse+pydev字体和颜色设置方法(另附pydev安装方法)
本文针对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 肯定是唯一的。如下图:
服务器根据这个唯一的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:
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/
发表评论
-
一句话反射shell
2014-12-28 16:13 2910通过一句话反射一个shell 首先你在自己的及其上起 ... -
微信公共平台框架-python(支持多账号)
2014-04-15 15:39 4114email:zealzpc@gmail.com 因 ... -
进程管理工具 supervisor
2013-03-14 12:01 1687经常在服务器上会启动很多程序,然后重启一下又要一个个重新启 ... -
tornado 问题小计
2013-01-29 12:47 14011 tornaod在ubuntu 的安装目录 /usr/ ... -
django1.4 问题记录
2013-01-28 13:59 9131 ImportError: Settings canno ... -
聊聊 tornado 的异步回调
2013-01-17 10:47 14039异步回调程序的原理和写法我不就不介绍了,因为我主要是来吐槽下 ... -
聊聊 django+mongodb 的session
2013-01-17 10:11 1788最近想用 django,mongodb,来做项目。 ... -
小记 django 1.4的变化
2012-11-06 23:23 1594最近因为公司游戏功能逐渐到了收尾阶段也算空下来点了,就索性想尝 ... -
使用redisco轻松将python内置数据类型存入redis内
2012-07-26 23:12 9658我在之前的 <python使 ... -
python使用redis 神器 ---redisco(一)
2012-07-07 22:42 28644很久没认真推荐过东西了,实在是人懒也没以前那么有心思去研究 ... -
redis set轻松做排行榜应用
2012-05-31 20:23 15534Author:pako email:zealzpc@gmai ... -
永久修改python默认的字符编码为utf-8
2011-08-19 14:06 17708这个修改说来简单,其实不同的系统,修改起来还真不一样。下面来罗 ... -
ubuntu 上安装pycurl
2011-07-12 11:20 3140我 是 在 8。04上 安装的装了 easy_installl ... -
使用Twisted Application 框架
2011-06-20 15:12 6859翻译by:pako email/gtalk:zealzpc@ ... -
用twisted创建tcp socket长链接amf server服务
2011-06-17 13:45 6844#Author:pako #Email/gta ... -
twisted:调用deferredlist多线程并发执行任务然后收集结果
2011-06-09 10:54 4516最近想通过twisted实现多线程并发去执行一件耗时的事,然后 ... -
对twisted 中deferred异步的理解
2011-03-29 15:38 4628最近小试了下twisted,还是发现用起来挺方便的,加之本身就 ... -
twisted简单实现多线程,轮询,后台daemon运行
2011-03-29 11:25 3269from twisted.application impo ... -
《django web开发指南》在v1.2.4版本上的出入
2011-01-25 00:44 1522<Django web 开发指南>第145页 第七 ... -
django.utils._os 中 safe_join 函数 windows下总报ValueError异常
2011-01-20 17:20 1805最近无聊在家看看django ...
相关推荐
在开始详细讨论Django框架下cookie和session的用法之前,需要理解几个基本概念。HTTP协议本身是无状态的,这意味着服务器不会保存任何关于客户端的信息。为了解决这个问题,引入了cookie和session的概念。 1. **...
在Web开发中,Django框架提供了方便的cookie和session管理机制,用于解决HTTP协议无状态的问题。HTTP协议本身不支持会话跟踪,因此需要借助额外的技术,如cookie和session,来实现用户状态的维护。 一、HTTP协议无...
在Web开发中,Django框架提供了对Cookie和Session的处理机制,这些都是为了克服HTTP协议的无状态特性。本文将深入探讨Django中的Cookie与Session,以及如何在实际应用中使用它们。 首先,Cookie是存储在客户端...
在Django框架中,Django提供了方便的API来处理Cookie和Session。下面我们将详细讨论这两个概念以及如何在Django中进行操作。 **Cookie** Cookie是一种在客户端存储数据的小型文本文件,由服务器发送到浏览器,并由...
在Django框架中,有两种主要方法可以实现这一功能:Django Session和Cookie。理解这两者的工作原理和如何在Django中使用它们至关重要。 首先,让我们深入了解Cookie。Cookie是由服务器发送到用户浏览器的一小段数据...
Session:Django的Session机制会向请求的浏览器发送cookie字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把session存入到数据库中。 Session依赖于Cookie,如果...
"Oldboy 3"可能是某种教学系列或者课程的第三部分,专门讲解Django ORM和session的使用。 "django_orm"是Django中的一个重要组成部分,它实现了ORM系统。ORM使得开发者可以将数据库操作与业务逻辑分离,通过Python...
### Django框架中Cookie和Session的用法详解 #### 1. Django框架中Cookie和Session的基本概念 在Django框架中,Cookie和Session是实现Web应用程序用户状态管理的重要机制。它们广泛应用于用户身份验证、页面个性化...
Django提供了session和cookie两种方式来实现用户登录状态的持久化。 **1. 配置数据库连接** 在Django项目中,首先需要配置数据库连接,这样应用才能与MySQL数据库交互。在`settings.py`文件中,定义`DATABASES`配置...
在Django框架中,Session和Cookie协同工作,实现用户身份验证和其他会话管理。 Django默认使用Cookie来保存一个称为`sessionid`的键值,这个键对应的是服务器端Session数据的唯一标识。当用户登录时,服务器会生成...
在Django中,`cookie`和`session`是用来实现用户状态跟踪的重要机制,尤其是在Web开发中,由于HTTP协议本身的无状态特性,服务器无法记住不同请求之间的关联信息。为了解决这个问题,开发者通常会借助cookie和...
在Django框架中,Cookie和Session是两种重要的会话跟踪技术,用于在Web应用中维持用户状态。本文将详细介绍这两种技术的使用。 首先,会话跟踪技术是Web开发中的核心概念,它允许服务器在多个HTTP请求之间保持用户...
DJango框架中cookie、session实际应用,简单的登录、跳转首页的demo。运用到cookie、session技术,初步理解cookie/session在实际当中的实际应用。通过demo实际操作来理解cookie/session
但是,你说你每次上网的时候,只需要登录一下就行了,并没有我说的让你每次都登录,这是会话路径技术帮你记录了你的登录信息,现在我们们就来讲讲Django的会话路径技术cookie和session,实现会话追踪。 二、cookie ...
### Django中的Session用法详解 #### 一、Session的基本概念 Session是一种常用的技术,用于跟踪用户的活动状态。在Web开发中,服务器与客户端之间本质上是无状态的通信过程,这意味着服务器无法通过HTTP协议记住...