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. BZOJ1901Zju2112 Dynamic Rankings——树状数组套主席树

    题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1 ],a[i+2]……a[j]中第k小的数是多少(1≤k ...

  2. spring cloud 入门系列一:初识spring cloud

    最近看到微服务很火,也是未来的趋势, 所以就去学习下,在dubbo和spring cloud之间我选择了从spring cloud,主要有如下几种原因: dubbo主要专注于微服务中的一个环节--服务 ...

  3. K8s核心概念详解

    kubernetes(通常简称为K8S),是一个用于管理在容器中运行的应用的容器编排工具. Kubernetes不仅有你所需要的用来支持复杂容器应用的所有东西,它还是市面上最方便开发和运维的框架. K ...

  4. Jenkins中配置邮件通知实例演示

    前言:本文通过安装配置Jenkins实现邮件通知,告知一个C# Git Repo的build成功与否 一.预配条件 在windows上安装Jenkins和它推荐安装的Plugins 创建一个@163. ...

  5. Android中用文件初始化sqlite 数据库(二)

    博 androidsqlite启动时数据库初始化  方法1已经讲述了一种初始化数据库的方法 它的数据库初始化不是用sql语句,而是用一个现成的sqlite的二进制文件进行直接copy到Android系 ...

  6. 树莓派上使用KickThemOut对局域网内的设备进行ARP欺骗

    安装KickThemOut工具 $ git clone https://github.com/k4m4/kickthemout.git $ cd kickthemout/ $ sudo -H pip ...

  7. 【CF711D】Directed Roads

    题目大意:给定一个 N 个点,N 条边的无向图,现给每条边定向,求有多少种定向方式使得定向后的有向图中无环. 题解:显然,这是一个外向树森林,定向后存在环的情况只能发生在基环树中环的位置,环分成顺时针 ...

  8. es6中的函数

    ES6 允许为函数的参数设置默认值,即直接写在参数定义的后面. function log(x, y = 'World') { console.log(x, y); } log('Hello') // ...

  9. javascript面向对象精要第四章构造函数和原型对象整理精要

  10. SNP (Single Nucleotide Polymorphism), SNV ( single nucleotide variants ) , Indel (insertion-deletion) 的区别

    SNP (Single Nucleotide Polymorphism):强调在一个群体中具有一定频率的变异,一般为二态性.比如G→C SNV ( single nucleotide variants ...