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. Django-website 程序案例系列-16 modle.form(表单验证)

    案例程序: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. 博弈论基础知识: 巴什博奕+斐波那契博弈+威佐夫博奕+尼姆博弈(及Staircase)(转)

    (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个.最后取光者得胜.若(m+1) | n,则先手必败,否则先手必胜.显然,如果n=m+1 ...

  3. 2019 Android 高级面试题总结

    说下你所知道的设计模式与使用场景 a.建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 使用场景比如最常见的AlertDialog,拿我们开发过程中举例,比如C ...

  4. OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%

    10000da.cnvboyule.cnjiaeidaypt.cn  在过去一年的研究中,OpenAI团队开源一个使用 MuJoCoengine开发的用于机器人模拟的高性能Python库.雷锋网了解到 ...

  5. 02 自学Aruba之无线频段---ISM频段及UNII频段

    点击返回:自学Aruba之路 02 自学Aruba之无线频段---ISM频段及UNII频段 1. 无线频段-ISM频段 ISM频段即工业,科学和医用频段.一般来说世界各国均保留了一些无线频段,以用于工 ...

  6. 自学Aruba4.1-Aruba开机初始化

    点击返回:自学Aruba之路 自学Aruba4.1-Aruba开机初始化 无线控制器刚启动的时候,是没有任何配置的,需要进行初始化配置才能进行管理. 通过无线控制器的console端口连接无线控制器, ...

  7. luogu1712 区间 (尺取法+线段树)

    先把区间按照长度从小到大排序,然后用尺取法来做 大概就是先一点一点把区间算上 直到某个点被覆盖了m次,然后一点一点把最前面的区间扔掉,直到没有点被覆盖m次,这样反复做(相当于是它选择的区间左右端点在那 ...

  8. android 之 Hnadler 、Message 、Looper

    Handler定义: 主要接受子线程发送来的数据,并用此数据配合主线程更新UI. 为什么要用Handler? 我们手机当中的很多功能或操作是不能都放在Activity当中的,比如下载文件.处理大量数据 ...

  9. eclipse index 不工作 F3 不能找到头文件

    To add paths containing code to parse, follow these steps :1. Right click on the project2. Select Pr ...

  10. A1078. Hashing

    The task of this problem is simple: insert a sequence of distinct positive integers into a hash tabl ...