在Django的视图(View)外使用Session的方法
从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中定义)。每个session都由一个随机的32字节哈希串来标识,并存储于cookie中。 因为它是一个标准的模型,所以你可以使用Django数据库API来存取session。
>>> from django.contrib.sessions.models import Session >>> s = Session.objects.get(pk='2b1189a188b44ad18c35e113ac6ceead') >>> s.expire_date datetime.datetime(2005, 8, 20, 13, 35, 12)
你需要使用get_decoded() 来读取实际的session数据。 这是必需的,因为字典存储为一种特定的编码格式。
>>> s.session_data 'KGRwMQpTJ19hdXRoX3VzZXJfaWQnCnAyCkkxCnMuMTExY2ZjODI2Yj...' >>> s.get_decoded() {'user_id': 42}
何时保存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,即使没发生变化。
注意,会话cookie只会在创建和修改的时候才会送出。 但如果 SESSION_SAVE_EVERY_REQUEST 设置为 True ,会话cookie在每次请求的时候都会送出。 同时,每次会话cookie送出的时候,其 expires 参数都会更新。
相关推荐
-
Django中的cookie与session操作实例代码
添加cookie: def login(req): if req.method=="POST": uf = UserInfoForm(req.POST) if uf.is_valid(): username = uf.cleaned_data["username"] password = uf.cleaned_data["password"] print username,password users = UserInfo.objects.fil
-
Django的session中对于用户验证的支持
用户与Authentication 通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证. 当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样). Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话. 这个系统一般被称为 auth/auth (认证与授权)系统. 这个系统的名称同时也表明了用户常见的两步处理. 我们需要 验证 (
-
在Python的Django框架的视图中使用Session的方法
SessionMiddleware 激活后,每个传给视图(view)函数的第一个参数``HttpRequest`` 对象都有一个 session 属性,这是一个字典型的对象. 你可以象用普通字典一样来用它. 例如,在视图(view)中你可以这样用: # Set a session value: request.session["fav_color"] = "blue" # Get a session value -- this could be called in
-
详解Python的Django框架中的Cookie相关处理
浏览器的开发者在很早的时候就已经意识到, HTTP's 的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生. cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies 来看看它是怎么工作的. 当你打开浏览器并访问 google.com ,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样: GET / HTTP/1.1 Host: google.com ... 当 Google响应时,
-
Django 中 cookie的使用
Cookie是浏览器在客户端留下的一段记录,这段记录可以保留在内存或者硬盘上.因为Http请求是无状态的,通过读取cookie的记录,服务器或者客户端可以维持会话中的状态.比如一个常见的应用场景就是登录状态.Django里面,对cookie的读取和设置很简单.Cookie本身的格式类似字典,因此可以通过request的key或者get获取:然后他的设置则是通过response对象的set_cookie设定; 如果要取消cookie,把过期时间设置为当前时间就行了. 获取Cookie: reque
-
在Django的session中使用User对象的方法
通过session,我们可以在多次浏览器请求中保持数据, 接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们需要认证. 当然了,Django 也提供了工具来处理这样的常见任务(就像其他常见任务一样). Django 用户认证系统处理用户帐号,组,权限以及基于cookie的用户会话. 这个系统一般被称为 auth/auth (认证与授权)系统. 这个系统的名称同时也表明了用户常见的两步处理. 我们需要 验证 (认证) 用户是否是他所宣称的用户(一
-
深入探究Django中的Session与Cookie
前言 Cookie和Session相信对大家来说并不陌生,简单来说,Cookie和Session都是为了记录用户相关信息的方式,最大的区别就是Cookie在客户端记录而Session在服务端记录内容. 那么Cookie和Session之间的联系是怎么建立的呢?换言之,当服务器接收到一个请求时候,根据什么来判断读取哪个Session的呢? 对于Django默认情况来说,当用户登录后就可以发现Cookie里有一个sessionid的字段,根据这个key就可以取得在服务器端记录的详细内容.如果将这个字
-
在Django的视图(View)外使用Session的方法
从内部来看,每个session都只是一个普通的Django model(在 django.contrib.sessions.models 中定义).每个session都由一个随机的32字节哈希串来标识,并存储于cookie中. 因为它是一个标准的模型,所以你可以使用Django数据库API来存取session. >>> from django.contrib.sessions.models import Session >>> s = Session.objects.g
-
举例讲解Django中数据模型访问外键值的方法
先设置一个关于书本(book)的数据模型: from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50) city = models.CharField(max_length=60) state_province = models.CharField(max_length=30)
-
在Django的视图中使用数据库查询的方法
在视图中也有笨方法可以从数据库中获取数据. 很简单: 用现有的任何 Python 类库执行一条 SQL 查询并对结果进行一些处理. 在本例的视图中,我们使用了 MySQLdb 类库(可以从 http://www.djangoproject.com/r/python-mysql/ 获得)来连接 MySQL 数据库,取回一些记录,将它们提供给模板以显示一个网页: from django.shortcuts import render_to_response import MySQLdb def bo
-
在Django的视图中使用form对象的方法
在学习了关于Form类的基本知识后,你会看到我们如何把它用到视图中,取代contact()代码中不整齐的部分. 一下示例说明了我们如何用forms框架重写contact(): # views.py from django.shortcuts import render_to_response from mysite.contact.forms import ContactForm def contact(request): if request.method == 'POST': form =
-
Django 视图层(view)的使用
视图层(view) 视图函数,简称视图,本质上是一个简单的Python函数,它接受Web请求并且返回Web响应.响应的内容可以是HTML网页,重定向,404错误,图片等任何东西,但本质是返回 响应对象HttpResponse . 视图函数的代码写哪里都可以,但一般约定俗成设置在项目或应用程序目录中的 views.py 文件中 视图案例: from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirec
-
详解Django中类视图使用装饰器的方式
类视图使用装饰器 为类视图添加装饰器,可以使用两种方法. 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图. def my_decorator(func): def wrapper(request, *args, **kwargs): print('自定义装饰器被调用了') print('请求路径%s' % request.path) return func(request, *args, **kwargs) re
-
Django rstful登陆认证并检查session是否过期代码实例
这篇文章主要介绍了Django rstful登陆认证并检查session是否过期代码实例,下面我们可以来一起学习一下. 一:restful用户视图 #!/usr/bin/env python # -*- coding:UTF-8 -*- # Author:Leslie-x from users import models from rest_framework.decorators import action from rest_framework.response import Respons
-
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
本文实例讲述了Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作.分享给大家供大家参考,具体如下: Thinkphp5.0 控制器向视图view的赋值 方式一(使用fetch()方法的第二个参数赋值): <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public function study_view(){ return $thi
-
Django在视图中使用表单并和数据库进行数据交互的实现
目录 写在前面 目结构及代码 项目结构 路由设置 数据库配置 定义模型 定义表单 修改模板 视图函数 记录感受 写在前面 博主近期有时间的话,一直在抽空看Django相关的项目,苦于没有web开发基础,对JavaScript也不熟悉,一直在从入门到放弃的边缘徘徊(其实已经放弃过几次了,如下图,一年前的笔记).总体感受web开发要比其他技术栈难,前后端技术都有涉及.如果没有实体项目支撑的话,很难学下去.但不管怎样,学习都是一件痛苦的事情,坚持下去总会有收获. 本博客记录的是<Django web
随机推荐
- 简介可以自动完成UI的AngularJS工具angular-smarty
- 在JavaScript中处理时间之getHours()方法的使用
- 使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
- WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
- JavaScript检测实例属性, 原型属性
- 布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
- JSP由浅入深(3)—— 通过表达式增加动态内容
- Javascript之Math对象详解
- mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法
- MySQL查询倒数第二条记录实现方法
- windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
- ASP中一个用VBScript写的随机数类
- 一个SQL语句获得某人参与的帖子及在该帖得分总和
- JavaScript中的Math.LOG2E属性使用详解
- Java Spring 事务回滚详解
- js下将字符串当函数执行的方法
- java使用POI批量导入excel数据的方法
- Android中BaseAdapter用法示例
- 详解C#多线程之线程同步
- Android AndBase框架使用封装好的函数完成Http请求(三)