zoukankan      html  css  js  c++  java
  • cookie和session

    Django中cookie工作流程

    1、客户端浏览器发起请求

    2、服务端接收到request,通过response对象的set_cookie("key","val")方法设置cookie并响应

    3、再次请求,服务端可以通过 request.COOKIES.get("key")

    简单登录验证示例

     1 def index(request):
     2     #获取浏览器请求中的的cookie
     3     is_login = request.COOKIES.get('is_login')
     4     if is_login:
     5         return render(request, 'index.html')
     6     return render(request,'login.html')
     7 
     8 #登录界面
     9 def login(request):
    10     if request.method =="GET":
    11         return render(request, 'login.html')
    12     else:
    13         user = request.POST.get('user')
    14         pwd = request.POST.get('pwd')
    15         obj_use = Userinfo.objects.filter(user=user,pwd=pwd).first()
    16         if obj_use:
    17             #得到httpresponse对象
    18             obj = redirect('/index/')
    19             #设置响应的cookie
    20             obj.set_cookie("is_login",True)
    21             obj.set_cookie('user',user)
    22             return obj
    23         return HttpResponse('error')

    注意:

    cookie 是在浏览器存储的,所以设置cookie是通过Response响应对象设置的,获取cookie信息直接从请求request中拿

    Django中的session

    主要方法实现流程

    #request.session.get("is_login")的实现:
    1 从请求中获取sessionid
    2 去django_session表中获取对应记录对象
    3 通过对象取出is_login这个键对应的值

    #设置session值    request.session["key"] = "val"

    if not sessionid :
      1 生成一个随机字符串作为sessionid
      2 在django-sesion表下创建一条记录(代表一个客户端浏览器)
      3 响应set_cookie("sessionid",随机的字符串)
    else:
      1 获取sessionid
      2 去diango_session数据库更新数据

    #删除服务端session记录  request.session.flush()的实现

    request.session.flush()的实现:
    1 获取sessionid
    2 过滤django_session对应的记录
    3 删除记录

    注意:

    session的数据是存储在服务端django_session表中的,所以每个浏览器只能对应一个sessionid(如果浏览器发一个请求创建一个sessionid,那么服务端的表会非常大,这不切合实际)。这个sessionid存在浏览器中,只要这个sessionid存在每次发起请求都只是更新服务端的该id对应数据,只有不存在时才会给浏览器重新分配sessionid。

  • 相关阅读:
    AX2009直接交运的bug
    数据库日志
    新蛋中国最新的分类导航,右侧展开菜单,可以修改向左或者向右展开
    用图片代替滚动条的代码
    新蛋网的大图展示效果,缩略图点击显示大图,上一个下一个
    Banner 切换,大小图不同,支持FF和OPERA,IE系列
    下拉菜单,支持所有浏览器
    电容选型
    000.数字电子技术分类
    Altium design16设计技巧
  • 原文地址:https://www.cnblogs.com/zhang-yl/p/10247192.html
Copyright © 2011-2022 走看看