django中cookies和session是两个经常使用的用户认证工具。都是类似于字典的数据类型,都是request的内部属性

cookies的读写方法

cookies读,比如username
username=request.COOKIES['username']
cookies写,比如username='book'.需要使用 HttpResponse对象的 set_cookie()方法
response.set_cookie("username","book")

sessions设置就比较简单

session读
username=request.session['username']
session写
session['username']='book'

2 session中一般使用字符串作为key来操作,尽量不要使用下划线开始的字符串来作为key,常常会导致糟糕的结果。

3 在使用cookies之前一般需要认证用户是否可以使用cookies,测试cookies的方法如下

在view试图函数中调用request.session.set_test_cookie()来设置是不够的,一般需要两部操作。在提交数据的时候检查 request.session.test_cookie_worked(),他会返回True或False。如果成功需要删除cookies。使用request.session.delete_test_cookie()。

def login(request):

    # If we submitted the form...
if request.method == 'POST': # Check that the test cookie worked (we set it below):
if request.session.test_cookie_worked(): # The test cookie worked, so delete it.
request.session.delete_test_cookie() # In practice, we'd need some logic to check username/password
# here, but since this is an example...
return HttpResponse("You're logged in.") # The test cookie failed, so display an error message. If this
# were a real site, we'd want to display a friendlier message.
else:
return HttpResponse("Please enable cookies and try again.") # If we didn't post, send the test cookie along with the login form.
request.session.set_test_cookie()
return render_to_response('foo/login_form.html')

4 设置cookies和session失效时间,在setting文件中

默认情况下SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 False ,这样,会话cookie可以在用户浏览器中保持有效达 SESSION_COOKIE_AGE 秒(缺省设置是两周,即1,209,600 秒)

如果 SESSION_EXPIRE_AT_BROWSER_CLOSE = True ,当浏览器关闭时,Django会使cookie失效。

5 django何时会修改session中的值

默认情况下,Django只会在session发生变化的时候才会存入数据库,比如说,字典赋值或删除

# Session is modified.
request.session['foo'] = 'bar' # Session is modified.
del request.session['foo'] # Session is modified.
request.session['foo'] = {} # Gotcha: Session is NOT modified, because this alters
# request.session['foo'] instead of request.session.
request.session['foo']['bar'] = 'baz'

你可以设置 SESSION_SAVE_EVERY_REQUEST 为 True 来改变这一缺省行为。如果置为True的话,Django会在每次收到请求的时候保存session,即使没发生变化。

django中cookies和session的更多相关文章

  1. 19 02 03 django 中cookies 和 session 和 cache

    Session 是单用户的会话状态.当用户访问网站时,产生一个 sessionid.并存在于 cookies中.每次向服务器请求时,发送这个 cookies,再从服务器中检索是否有这个 session ...

  2. Django中cookie和session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  3. django之cookies,session 、中间件及跨站请求伪造

    cookies 和session 为什么会有cookie? ​ 由于http协议是无状态的,即用户访问过后,不留痕迹(状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被 ...

  4. Django中cookie和session的操作

    一.cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是 ...

  5. Django中Cookie和Session配置和操作

    Cookie Cookie以键值对Key-Value形势进行信息的存储. Cookie基于域名安全,不同域名的Cookie是不能互相访问的 Cookie是存储在浏览器中的一段纯文本信息,建议不要存储敏 ...

  6. django 中 cookie与session 相关的知识

    cookie :它是一个字典  

  7. Django中cookie和session使用

    cookie和session的简单使用 def cookie(request): """ 操作cookie """ resp = HttpR ...

  8. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  9. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

随机推荐

  1. https://leetcode-cn.com/

    https://leetcode-cn.com/ 码,马不停蹄,码不停题 英文版:https://leetcode.com/

  2. matlab中find函数的使用说明

    matlab中如何统计一个矩阵M中零的个数 size(find(M==0),1) 原文:http://blog.sina.com.cn/s/blog_707b64550100rbh3.html fin ...

  3. Mac 显示和隐藏文件

    显示和隐藏文件 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令: def ...

  4. 7. Add song to Phone

    package com.example.thenewboston; import android.app.Activity; import android.media.MediaPlayer; imp ...

  5. DevExpress学习03——label控件的背景色问题

    今天使用了DevExpress的labelControl,发现拖放上去,其背景色和主窗体的背景一样,非常不谐调,把BackColor设置为透明也不行(Windows中的Label可以). 没有办法,我 ...

  6. Unable to resolve superclass of

    因为用了和Google map相关的类,而Google map是单独的library,需要导入之后才能使用,因此在manifest.xml文件中的<application></app ...

  7. Loadrunner 11 遇到的问题

    环境 OS:windows 8.1 64bit LoadRunner版本:11 问题 1.  VuGen:开始录制后,火狐浏览器没有反应,不会弹出打开 可能原因一:浏览器版本太高. 解决方案: 1)卸 ...

  8. 解决Windows7 Embedded连接手机问题

    故障现象:正确安装厂商自带的驱动后,插入安卓或iPhone手机,提示找到新硬件,却无法成功安装驱动.在此可以肯定的是:手机驱动无问题,手机.连接线也无问题.看来问题又落到“Embedded”上了! 仔 ...

  9. Android 逆向project 实践篇

    Android逆向project 实践篇 上篇给大家介绍的是基础+小Demo实践. 假设没有看过的同学能够进去看看.(逆向project 初篇) 本篇主要给大家介绍怎样反编译后改动源代码, 并打包执行 ...

  10. oracle date日期类型 精析

      一.date 1.date.sysdate格式说明 展示 date类型,展示格式既可以为:YYYY/MM/DD,也可以为YYYY/MM/DD HH24:MI:SS: 其存储格式只有一种:YYYY/ ...