定义

  保存在客户端浏览器的键值对。

作用场景

  1.登录校验

  2.保存用户的一些偏好信息

Cookie的查询

  查询所有的Cookie信息:

 request.COOKIES

  完整的Cookie信息就是一个大的字典,具体的Cookie用键值对保存在字典中,因此也可以用下面的这种方式查询单个Cookie信息。

 request.COOKIES["user"]

   查询原生Cookie信息:

 request.COOKIES.get("yinzhou")

  查询加盐版Cookie信息:

request.get_signed_cookie("user",salt="woshishuaige",default=None) #获取加盐版cookie信息,如果获取不到就设置为None

要获取的key和salt要和设置的相同才可以成功查询

Cookie的设置

  原生版Cookie设置

 obj.set_cookie("yinzhou","woshishuaige")

指定key、value即可。

  加盐版Cookie设置

 set_signed_cookie("user",user,salt="woshishuaige")
 def index(request):
# cook = request.COOKIES.get("yinzhou") #获取原生版COOKIE信息
print(request.COOKIES)
print("************",request.COOKIES["user"])
cook_salt = request.get_signed_cookie("user",salt="woshishuaige",default=None) #获取加盐版cookie信息,如果获取不到就设置为None
if cook_salt:
return render(request, "index.html")
else:
return redirect(reverse("login")) def login(request):
# 打印所有完整的COOKIES信息
print(request.COOKIES)
if request.method == "POST":
user = request.POST.get("user")
pwd = request.POST.get("pwd")
if user == "root" and pwd == "admin":
obj = redirect(reverse("index"))
# obj.set_cookie("yinzhou","woshishuaige") 原生COOKIES
obj.set_signed_cookie("user",user,salt="woshishuaige") # 加盐版COOKIE
return obj
return render(request,'login.html')

Session

定义

  Session是高级版的Cookie,Session可以解决原生Cookie的安全性低的问题。其次Session在服务端,Cookie在客户端,但是Session需要依赖于Cookie的支持才能工作。

需要注意的几点

  Session的步骤:

  1.服务端生成Session_key,自己保留一份,同时给客户端发送一份,Session_key用于唯一标识一个用户,关于用户的数据保存在Session_data中。

  2.当客户端再次访问需要登录验证页面的时候,会携带之前服务端发送的Session_key访问页面,在显示页面之前,服务端会与自己存放在数据库中的Session_key做校验,若一致,则显示页面,不一致则返回登录页面。

  其他:

    1.使用 request.session.delete()方法会删除该用户对应的Session_key在django_session表中的的记录。

    2.一个用户会创建一个Session_key对象。

 def check(fun):
def inner(request,*args,**kwargs):
if request.session.get("woshishuaige",None):
# Session通过则显示页面
ret = fun(request,*args,**kwargs)
return ret
else:
#session不通过则返回到登录界面
url = request.get_full_path()
return redirect('/login/?from={}'.format(url))
return inner @check
def index(request):
return render(request,"index.html") def login(request):
url = request.GET.get("from")
user = request.POST.get("user")
pwd = request.POST.get("pwd")
if request.method == "POST":
if user == "root" and pwd == "admin":
request.session["woshishuaige"]="liuyinzhou"
return redirect(url)
else:
return redirect(url)
return render(request,"login.html") def logout(request):
ret = redirect(reverse("login"))
ret.delete_cookie("user")
return ret @check
def home(request):
return render(request,"home.html")

最新文章

  1. Java动态加载类在功能模块开发中的作用
  2. 添加IFrame导致内存溢出的解决过程(IE浏览器,目前发现了原因,还未解决)
  3. xargs的- n1参数
  4. J2EE它是一个框架?平台?规范?
  5. EasyUI - Menu 菜单
  6. MongoDB学习之--增删改查(1)
  7. GUID的获取
  8. C++ 设计模式 依赖倒置原则 简单示例
  9. Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 构建监控平台之应用数据分析
  10. BZOJ_4864_[BeiJing 2017 Wc]神秘物质_Splay
  11. spring + quartz定时任务,以及修改定时任务
  12. js判断手机是安卓还是ios
  13. MySql 查询表中字段的数据类型
  14. 淘宝开源的H5移动开发UI框架genie-ui
  15. C# name scheme
  16. bash中 2>&1 & 的解释
  17. Python(五)之迭代器和列表解析
  18. IP和java.net.InetAddress类的使用
  19. 判断app是否是第一次启动
  20. July 19th 2017 Week 29th Wednesday

热门文章

  1. Perl 子程序(函数)
  2. 【ZOJ3329】One Person Game
  3. Nginx源码完全注释(8)ngx_errno.c
  4. C++——堆、栈、静态存储区
  5. 安装了Anaconda之后,Maya运行报错,Python 找不到 Maya 的 Python 模块
  6. CS API 测试2
  7. A*搜索 概念
  8. [SoapUI] JsonPath is to JSON what XPath is to XML
  9. javascript总结41:表格全选反选,经典案例详解
  10. Linux下安装python,ftp,Ubuntu和centos配置静态ip以及下载地址