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的更多相关文章

  1. python 学习笔记十九 django深入学习四 cookie,session

    缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...

  2. Django学习之Cookie和Session

    一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除 ...

  3. Django 认证系统 cookie & session & auth模块

    概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏 ...

  4. 49、django工程(cookie+session)

    49.1.介绍: 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cooki ...

  5. Django 学习之cookie与session

    一.cookie和session的介绍 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...

  6. django学习之- Cookie

    cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{'k':'sfs'},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当 ...

  7. 【转】学习总结--Cookie & Session总结

    转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理 1)什么是状态管理?   将浏览器与web服务器之间多次交互过程 ...

  8. Web安全测试学习笔记(Cookie&Session)

    一,Session:含义:有始有终的一系列动作\消息1, 隐含了“面向连接” 和“保持状态”两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构“把××保存在s ...

  9. Django学习手册 - 权限管理(二)

    从数据库获取数据后,对数据进行清洗 目标: 数据1,存放至session 中的数据 数据2,显示至前端的菜单数据 清洗数据: 1.session存放的数据:(menu_leaf_dict) 2.前端菜 ...

随机推荐

  1. GO系列教程

    1.介绍与安装 2.Hello World 3.变量 4. 类型 5.常量 6.函数(Function) 7.包 8.if-else 语句 9.循环 10.switch语句 11.数组和切片 12.可 ...

  2. HDU - 1260 (Tickets)

    题意:  买票    一个人要么自己买  要么和前面的人一起买   这两种情况分别有一个买票所花费的时间  求总的花费时间最小 解析: dp[i] 表示前i个人买票总的花费时间 v[i]表示第i个人买 ...

  3. Application Server not specified

    IDEA使用tomcat启动web项目,配置页面报错Application Server not specified: 那是因为没有配置tomcat,只要配置一下就好了:

  4. python构建bp神经网络_曲线拟合(一个隐藏层)__2.代码实现

    IDE:jupyter 抽象程度可能不是那么高,以后再优化. 理论和代码实现的差距还是挺大的 数据集请查看 python构建bp神经网络(一个隐藏层)__1.数据可视化 部分代码预览 git上传.ip ...

  5. luogu3707 相关分析 (线段树)

    把式子展开以后会发现,可以用线段树维护$x,y,x*y,x^2$分别的区间和 然后操作有区间加和区间修改 这个pushdown的时候,如果改和加的标记同时存在,那一定是先改再加,要不然加的标记已经被清 ...

  6. I/O多路复用详解

    要想完全理解I/O多路复用,需先要了解I/O模型: 一.五种I/O模型 1.阻塞I/O模型 最流行的I/O模型是阻塞I/O模型,缺省情形下,所有套接口都是阻塞的.我们以数据报套接口为例来讲解此模型(我 ...

  7. forEach、for、$.each()跳出循环比较

    无论工作上或是学习上,用过的知识点总是容易忘记,于是略作记录,方便你我他. 说起跳出循环,第一时间想起的是 break \ continue,这是经典的for循环. 1.for 循环 先上例子,思考输 ...

  8. C# String类&Math类&DateTime类

    String类: String a = "abcdefghijklmnopqrstuvwxyz"; int length = a.length;  //获取字符串的长度: a = ...

  9. Flash10 使用剪贴板得改变程序的写法了

    昨天一个客户告诉我,在她的电脑上无法复制图片的链接地址. 一开始,我以为是她操作有误,因为在我们的系统里使用的是一种“双保险”的复制方法. javascript + flash 两种方法来进行复制. ...

  10. location的三种连接方式和区别

    location.href是一个属性,要这样使用:location.href='http://www.example.com'而location.assign('http://www.example. ...