Django学习手册 - cookie / session
cookie
"""
cookie属性:
obj.set_cookie(key,value,....)
obj.set_signed_cookie(key,value,salt="加密盐",....)
参数:
key 键
value=“” 值
max_age=None 超时时间
expires=None 超时日期
path="/" cookit生效的路径,/表示根路径,特殊的,跟路径的cookie可以被任何url被任何url的页面访问
domain=None cookie生效的域名
secure=False https传输
httponly=False 只能http协议传输,无法javascript获取(不是绝对,底层抓包可以获取到) 获取cookie
request.COOKIES
request.COOKIES['username']
request.COOKIES.get("username") 设置cookie
response = render(request,'index.html')
response = redirect("/index/")
response = set_cookie("key","value")
return response 加盐配置:
obj = HttpResponse("S")
获取加盐cookie
obj.set_signed_cookie("username","passwd",salt="jiayan")
设置加盐cookie
obj.get_signed_cookie("username",salt="jiayan")
获取与设置的加盐 一定要是相同的加盐字符 """
前端:(login 页面)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<form action="/login/" method="post">
<p>
<span>用户名:</span> <input type="text" name="user">
<span>密码:</span><input type="password" name="pwd">
<input type="submit" value="提交">
</p>
</form>
</div>
</body>
</html>
前端:(index页面)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>
欢迎登录......... </h1>
</body>
</html>
URL:
from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from app01 import views urlpatterns = [
path('admin/', admin.site.urls),
url('^login/', views.login),
url('^index/', views.index),
]
后端:
from django.shortcuts import render,HttpResponse,redirect # Create your views here. def login(request):
print(request.COOKIES)
print(request.session)
if request.method == "POST":
u = request.POST.get("user",None)
p= request.POST.get("pwd",None)
if u == "root" and p == "":
# cookie的方式:
# ret = redirect("/index/")
# #设置cookie数值
# ret.set_cookie("name","123",10)
# return ret #session方式
request.session["info_login"]=True
request.session["user"] = u
return redirect("/index/") else:
redirect("/login/")
return render(request,"login.html") def index(request):
#cookie
# if request.COOKIES.get("name",None):
# print("index")
# return render(request,"index.html") #session
if request.session.get("info_login",None):
name = request.session.get("user")
return render(request,"index.html")
#session 默认存放在数据库中。 else:
return redirect("/login/")
--------------------------------------------------------------------------------------------------------------------------------------------------------
装饰器的方式:
from django.shortcuts import render,redirect,HttpResponse # Create your views here. def aut(fum):
def log(request,*args,**kwargs):
if request.COOKIES.get("user",None):
return fum(request,*args,**kwargs)
else:
return redirect("/login/")
return log def login(request):
if request.method == "POST":
u = request.POST.get("user", None)
p = request.POST.get("pwd", None)
if u == "root" and p == "":
ret = redirect("/index/")
# ret.set_cookie("user", u)
ret.set_signed_cookie("user",u,salt="abcd") return ret
else:
return redirect("/login/")
return render(request,"login.html") @aut
def index(request):
return HttpResponse("OK")
核心 session
1.session 依赖cookie
2.Session流程
3.Session操作
4.Session配置
5.Session存储
注意!!!
django 默认数据存储在数据表格中的,所以在配置好之前一定要创建数据表格!!!
python manage.py makemigrations
python manage.py migrate
#生成随机字符串
#写到用户浏览器cookie
#保存到session中
#在随机字符串对应的字典中设置相关内容
Request.session[‘user’] = user
Request.session[‘is_login’] = True
Return redirect(“/index/”) #Session 获取数据
Request.session[‘k1’]
Request.session.get(“k1”,None) #设置数据
Request.session[‘k1’] = 123
Request.session.setdefault(“k1”,123)
#存在则不设置 #删除数据
Del request.session[‘k1’]
Request.session.clear()
Request.session.delete(‘session_key’
) #所有键值,键值对
Request.session.keys()
Request.session.values()
Request.session.items()
Request.session.iterkeys()
Request.session.itervalues()
Request.session.iteritems() #用户session的随机字符串
Request.session.session_key #将所有session失效时间小于当前日期的数据删除
Request.session.clear_expired() #检查用户session的随机字符串在数据中是否
Request.session.exists(“session_key”) #删除当前用户的所有session数据
Request.session.delete(“session_key”) Request.session.set_expiry(value)
*如果value是个整数,session会在些秒数后失效。
*如果是value是个datatime或timedelta,session就会在这个时间后失效
*如果value是0,用户关闭浏览器session就会失效。
*如果value是None,session会依赖全局session失效策略 #在setting里面设置
SESSION_COOKIE_NAME = “sessionid”
#session 的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) SESSION_COOKIE_PATH = ‘/’
#session 的cookie 保存的路径(默认) SESSION_COOKIE_DOMAIN=None
#session 的cookie 保存的域名(默认) SESSION_COOKIE_SECURE=False
#是否HTTP传输cookie SESSION_COOKIE_HTTPONLY=True
#是否session的cookie只支持http传输 SESSION_COOKIE_AGE = 1209600
#失效日期2周默认 SESSION_COOKIE_AT_BROWSER_CLOSE=False
#是否关闭浏览器使得session过期 SESSION_SAVE_EVERY_REQUEST=False
#是否每次请求都保存session,默认修改之后才保存
session数据可以在request中提取到,所以后端不必传值。
#用session 传递数据至前端(session数据封装在request里)
#前端:
<span>
<h3>{{request.session.user}}</h3>
</span> #后端
def index(request):
if request.session.get(“is_log,None)
return render(request,”index.html”)
else:
return redirect(“/login/”)
Django 中默认支持session,其内部提供了5中类型的session公开发者使用:
- 数据库(默认)
- 缓存
- 文件
- 缓存+数据库
- 加密+cookie
Django学习手册 - cookie / session的更多相关文章
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- Django学习之Cookie和Session
一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除 ...
- Django 认证系统 cookie & session & auth模块
概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏 ...
- 49、django工程(cookie+session)
49.1.介绍: 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cooki ...
- Django 学习之cookie与session
一.cookie和session的介绍 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...
- django学习之- Cookie
cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{'k':'sfs'},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当 ...
- 【转】学习总结--Cookie & Session总结
转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理 1)什么是状态管理? 将浏览器与web服务器之间多次交互过程 ...
- Web安全测试学习笔记(Cookie&Session)
一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...
- Django学习手册 - 权限管理(二)
从数据库获取数据后,对数据进行清洗 目标: 数据1,存放至session 中的数据 数据2,显示至前端的菜单数据 清洗数据: 1.session存放的数据:(menu_leaf_dict) 2.前端菜 ...
随机推荐
- BZOJ1018[SHOI2008]堵塞的交通——线段树
题目描述 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总 ...
- BZOJ3172[Tjoi2013]单词——AC自动机(fail树)
题目描述 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. 输入 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个 ...
- bzoj 3295 动态逆序对 (三维偏序,CDQ+树状数组)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3295 思路: 可以将这道题看成倒着插入,这样就可以转化成求逆序对数,用CDQ分治降维,正反用 ...
- day22 time模块
表示方式有三种 时间戳 给机器看的 float格式 格式化的字符传 给人看的 格式化时间 元祖 计算用的 结构化时间 1 # 时间戳时间 2 # 返回一个时间戳,表示从1970.1.1日到现在的秒数 ...
- 【Gym - 101124A】The Baguette Master (数学,几何)
BUPT2017 wintertraining(15) #4F Gym - 101124A 题意 给定画框宽度,画的四边和一个对角线长度,求画框外沿周长. 题解 过顶点做画框的垂线,每个角都得到两个全 ...
- Luogu 1979 NOIP 2013 华容道(搜索,最短路径)
Luogu 1979 NOIP 2013 华容道(搜索,最短路径) Description 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面 ...
- JS面试题(一)
1.JS六种基本数据类型:string Boolean number object undefined function typeof返回的是字符串,有六种:string Boolean number ...
- Failed to load because no supported source was found
Uncaught (in promise) DOMException: Failed to load because no supported source was found? 等待解决:
- AE与C#入门笔记
http://www.cnblogs.com/e3e4/articles/3695214.html
- 怎么看SQL表里某列是否是自增列
开启或关闭自增列 SET IDENTITY_INSERT 表名 ON/OFF 1.语句 Select OBJECTPROPERTY(OBJECT_ID('表名'),'TableHasIdentity' ...