Django之Cookie和Session
http://www.cnblogs.com/liwenzhou/p/8343243.html
一、Cookie
Cookie是什么?
就是保存在客户端浏览器上的键值对。
Cookie为什么存在?
因为HTTP请求是没有状态的,每一次请求都是独立的。
服务端控制着响应,在响应里可以让浏览器在本地保存键值对,下一次登录时可以自动携带这个值。
Cookie的应用:
1、登陆、七天免登陆。
2、记录用户的浏览习惯。
3、简单的投票限制。
Cookie是服务端设置的,浏览器可以不让服务端设置Cookie(禁用),但是就无法登陆。
Cookie默认在浏览器关闭时清楚。
(1)Cookie设置流程(以登陆为例):
1、在登陆数据提交时red = redrict(...) red.set_cookie("key","value")
2、在主页验证是否有cookie: request.COOKIES.get("...")
(2)装饰器
由于在每个页面都会用到Cookie,所以可以把验证Cookie的语句封装成装饰器来使用:
(3)验证cookie后返回之前的页面 path_info
(4)cookie的保存时间max_age
(5)删除cookie
def cookie_decoration(func):
def inner(request):
":
return func(request)
else:
present_url = request.path_info #获取当前url地址
return redirect("/login"+"/?pre="+present_url)
return inner
def login(request):
if request.method == "POST":
":
if request.GET.get("pre"): #获取上一页url地址
red = redirect(request.GET.get("pre"))
else:
red = redirect("/home")
red.set_cookie(",max_age=30) #max_age是cookie值保存的时间,以秒为单位
return red
else:
return HttpResponse("error")
return render(request,"login.html",locals())
@cookie_decoration
def home(request):
return render(request,"home.html",locals())
def logout(request):
red = redirect("/login")
red.delete_cookie("is_login")
return red
二、session
为什么有session?
cookie有一些弊端,其存储的数据是有限制的,而且数据存储在客户端,容易被窃取,所以出现session,session没有数据大小限制,且数据存储在服务端,安全性强。
session依赖于cookie,他把随机字符串作为一个大字典的键,把数据都存储在这个大字典中,字典存储在服务端,而把这个随机字符串作为cookie的值传给客户端,所以客户端只拿到这个随机值,通过这个值去服务端取数据。
注意:session需要创建数据库信息,才能把键值对存储在数据库中,不然无法使用,记得makemigrations
def cookie_decoration(func):
def inner(request):
if request.session.get("is_login") == "true":
return func(request)
else:
present_url = request.path_info #获取当前url地址
return redirect("/app02/login"+"/?pre="+present_url)
return inner
def login(request):
if request.method == "POST":
":
request.session['is_login'] = "true"
if request.GET.get("pre"): #获取上一页url地址
return redirect(request.GET.get("pre"))
else:
return redirect("/app02/home")
else:
return HttpResponse("error")
return render(request,"login.html",locals())
@cookie_decoration
def home(request):
return render(request,"home.html",locals())
def logout(request):
request.session.flush()
return redirect("/app02/login")
Django之Cookie和Session的更多相关文章
- Django之Cookie、Session、CSRF、Admin
Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...
- [py][mx]django的cookie和session操作-7天免登录
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- Django基础cookie和session
Django基础cookie和session 1.会话跟踪 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...
- django的cookie和session以及内置信号、缓存
cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...
- django的cookie 和session
Cookie 1.获取cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt=' ...
- Django组件-cookie与session
一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...
- web框架开发-Django组件cookie与session
http协议的每一次都是无保存状态的请求,这会带来很多的不方便,比如,一刷新网页,或者进入该网页的其他页面,无法保存之前的登录状态.为了解决类似这样的问题,引入了会话跟踪 会话跟踪技术 1 什么是会话 ...
- Django 之 cookie和session
一. Cookie 1.Cookie的由来 因为HTTP协议是无状态的,无状态的意思就是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,也不会受前后请求响应情况直接影响.简 ...
- django之COOKIE 与 SESSION
COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...
- 9.Django组件-cookie和session
HTTP协议的无保存状态,对两次请求没有任何关联.每次请求都是相互独立的. 1.cookie简介 什么是会话跟踪技术我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会 ...
随机推荐
- 步步深入:MySQL架构总览->查询执行流程->SQL解析顺序(转)
文章转自 http://www.cnblogs.com/annsshadow/p/5037667.html https://www.cnblogs.com/cuisi/p/7685893.html
- linux sort排序及取前几条数据
查看sort --help -n 根据字符串的数值进行比较 -k 根据某一个关键字的位置或者类型排序 -r 倒序排序 -t 字段分隔,后面跟分隔符 查看head --help -n 打印前几行记录,后 ...
- DependencyInjection源码解读之ServiceProvider
var services = new ServiceCollection(); var _serviceProvider = services.BuildServiceProvider(); serv ...
- JSON数组形式字符串转换为List<Map<String,String>>的8种方法
package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArr ...
- Maven基础:Maven环境搭建及基本使用(1)
1. Maven环境搭建 1.1 Maven简介 1.2 Maven下载及环境设置 Maven下载地址:http://maven.apache.org/download.cgi 当前下载版本:apac ...
- /usr/bin/ld: .build_release/tools/alignment_tools.o: undefined reference to symbol 'omp_get_thread_num@@OMP_1.0'
问题:/usr/bin/ld: .build_release/tools/alignment_tools.o: undefined reference to symbol 'omp_get_threa ...
- [BZOJ 4818] [SDOI 2017] 序列计数
Description Alice想要得到一个长度为 \(n\) 的序列,序列中的数都是不超过 \(m\) 的正整数,而且这 \(n\) 个数的和是 \(p\) 的倍数. Alice还希望,这 \(n ...
- 【LOJ2542】【PKUWC 2018】随机游走 min-max容斥 树上高斯消元
题目描述 有一棵 \(n\) 个点的树.你从点 \(x\) 出发,每次等概率随机选择一条与所在点相邻的边走过去. 有 \(q\) 次询问,每次询问给定一个集合 \(S\),求如果从 \(x\) 出发一 ...
- python学习日记(初识面向对象)
面向过程 VS 面向对象 面向过程 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统 ...
- 用python 发 帝国cms 文章
在e\extent下面放一个jiekou.php #!/usr/bin/env python3 # -*- coding: utf-8 -*- import time import urlli ...