1如下是登录注册和记住密码的功能:

# -*- coding: utf-8 -*-

def cms_login(request):
if request.method == 'GET':
return render(request,'cms_login.html')
else:
form = LoginForm(request.POST)
if form.is_valid():
# user = UserModel(username=username)
# user.password == hash(password)
username = form.cleaned_data.get('username',None)
password = form.cleaned_data.get('password',None)
#if hash(password) == AuthorModel.objects.filter().first().password
user = authenticate(username=username,password=password)
if user and user.is_active:
login(request,user)
if remember:
request.session.set_expiry(None)
else:
request.session.set_expiry(0)
nexturl = request.GET.get('next')
# return redirect(reverse('cms_index'))
print 'nexturl=',nexturl
if nexturl:
return redirect(nexturl)
else:
return redirect(reverse('cms_index')) else:
return render(request,'cms_login.html',{'errors':u'用户名或密码错误'})
else:
return render(request,'cms_login.html',{'errors':form.errors})

如何设置sessiond的过期时间:

session的有效期时间是通过request.session.set_expiry(value)进行设置的。

  1. 如果value是一个int类型,那么session将在value这个时间后过期,其中value代表的是秒。
  2. 如果value是一个datetime或者timedelta对象,那么这个session将在指定的时间后过期。datetime必须是使用了PickleSerializer进行序列化的。
  3. 如果value等于0,那么session将在web浏览器关闭后就直接过期。
  4. 如果value等于None,那么session将用settings.py中设置的全局过期字段SESSION_COOKIE_AGE,这个字段默认是14天,也就是2个礼拜。
  5. 读session的时候不会修改session的有效期,修改session的时候会重新设置session的有效期,会从修改的时间,重新计时。
  6. 如果settings.py中设置了SESSION_EXPIRE_AT_BROWSER_CLOSE=True,那么默认讲不再使用SESSION_COOKIE_AGE了,而是浏览器一关闭,session数据就会过期。这个值默认是为False。

session保存的设置:

session可以保存在文件,数据库,缓存以及cookie中,要设置session的保存路径,需要在settings.py中设置SESSION_ENGINE:

  1. 基于缓存的:django.contrib.sessions.backends.cache,如果设置缓存的,那么session中的所有数据将存储在内存中。同时,需要在settings.py中配置CACHES,一般我们使用memcached作为缓存,通过以下代码进行配置:

    CACHES = {

    'default': {

    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

    'LOCATION': '127.0.0.1:11211'

    }

    }
  2. 基于文件存储的:django.contrib.sessions.backends.file,那么需要配置SESSION_FILE_PATH来控制缓存的文件路径。
  3. 基于cookie的:django.contrib.sessions.backends.signed_cookies,那么所有的session数据都会被保存在cookie中。
  4. 基于数据库的:如果不配置SESSION_ENGINE,那么默认就是使用数据库来作为存储,如果需要显示配置,那么配置项是django.contrib.sessions.backends.db。
  5. 基于数据库+缓存的:django.contrib.sessions.backends.cached_db,这种情况,每次往缓存中写数据的时候,都会同步到数据库中,来做一个持久化。每次读session数据的时候,都优先从缓存中查找,如果缓存中没有这个值了,才从数据库中查找。

如何清除sessions数据:

session默认只是过期,为了考虑到数据的需要,django并不会从数据库或者文件中删除,所以这个要运维人员或者后台管理人员手动的清除那些已经过期了的session,最快捷的方式是通过命令定时的删除:python manage.py clearsessions,当然,如果backend是存储在cookie或者缓存中,那么他们将在过期后自动删除。

设置session过期时间的更多相关文章

  1. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  2. Asp.NET设置Session过期时间的四种方式

    在Asp.net中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会话超时(分钟)-设置为120,即为2小时,即120分 ...

  3. C# asp.net IIS 在web.config和IIS中设置Session过期时间

    有时候在web.config设置sessionState 或者类文件里设置Session.Timeout,在IIS里访问时每次都是达不到时间就超时,原因是因为在IIS中设置了Session的超时时间, ...

  4. 转:设置session过期时间

    在Asp.net应用中,很多人会遇到Session过期设置有冲突.其中,可以有四处设置Session的过期时间: 一.全局网站(即服务器)级 IIS-网站-属性-Asp.net-编辑配置-状态管理-会 ...

  5. YII2 设置session过期时间

    设置session过期时间 如何在YII里设置SESSION过期时间,而不需要在php.ini里面设置. 在protected/config/main.php里,设置: 代码如下 复制代码 'comp ...

  6. asp中设置session过期时间方法总结

    http://www.jb51.net/article/31217.htm asp中设置session过期时间方法总结 作者: 字体:[增加 减小] 类型:转载   asp中默认session过期时间 ...

  7. 如何设置session过期时间为30分钟

    今天在我的微博(Laruence)上发出一个问题: 我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识挺多, 特别适合考察 ...

  8. php中实现精确设置session过期时间的方法

    http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下sessio ...

  9. 转:php中实现精确设置session过期时间的方法

    原文来自于:http://www.jb51.net/article/52309.htm 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下 ...

  10. C#如何设置session过期时间

    1.操作系统  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...

随机推荐

  1. 【实用】如何将sublime text 3 打造成实用的python IDE 环境

    前段时间写脚本,一直使用的是pycharm ,无奈机器不配置实在不怎么样,我记得之前用过subline text,这是我用过的最酷炫的文本编辑器,参考了一下网上的文章,自己走了一些弯路,将心得写在这里 ...

  2. Qt C++ 并发,并行,多线程编程系列1 什么是并发

    什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见.如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发. 在计算机的系统里面,并发一般有两种, ...

  3. MySQL☞聚合函数/分组函数

    分组函数(聚合函数) 1.count(*/列名): a.*:求出该数据的总条数 select  count(*)  from 表名 b.列名:求出该列中列名不为null的总条数 select  cou ...

  4. windows下网络命令----Tracert命令详解

    现在网络四通八达,网线光纤基站卫星,只要运营商能收费的地方,就有网络,覆盖了全世界所有的区域.彻底改变了以前通讯基本靠吼的情况.那么宽广的网络世界,超过100米就得需要中继放大信号的网线,即使现在的光 ...

  5. Ubuntu 进阶命令——长期不定时更新

    有时候远程连接服务器忽然中断或者不小心关掉了终端界面,正在运行的命令或者程序就会被强制停止.这时候,我们可以借助一些命令来避免这种情况的发生. nohup 不挂断地运行命令 & 在后台运行命令 ...

  6. 从零开始搭建一个react项目

    Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...

  7. CentOS7安装Jenkins Master

    一.安装java环境 1.查看服务器版本 cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 升级操作系统 yum update ...

  8. JavaSE复习(六)函数式接口

    函数式接口 有且仅有一个抽象方法的接口 @FunctionalInterface注解 一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错.需要注 意的是,即使 ...

  9. Linux挂载Win共享文件夹_VmwareTools

  10. 算法(6)3Sum Closest

    kSum问题是一类问题,基本的方法是两个循环,其他一个查找,但是今天碰到了一个超级棘手的问题,是3Sum问题的一个变型 问题:给定一个数组,给定一个整数k,要求找出在数组中找到3个整数,使得这三个整数 ...