seesion-Django

session  状态保持

http协议特点是无状态的:每次请求都是一次新的请求,不会记住之前的通信状态

客户端与服务器的一次通信,就是一次会话

实现状态保持的方式:在客户端或服务端存储与会话有关的数据

存储方式包括:cookie ;seession ,会话一般指sessIion对象

使用cookie,所有数据存储在客户端,注意不要存储敏感信息

推荐使用session方式,所有的数据存储在服务器端,在客户端cookie中存储session_Id

状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据

注意:不同额请求者之间不会共享这个数据,与请求者一 一对用。

下图(浏览器从A中获取的内容,在B页面无法获得......这就是指的是无状态,

某一网站登陆成功的时候,服务端可以往客户端返回一些信息cookie

cookie一般存的信息都不敏感;

敏感信息用session来存:

)


启用session 

使用django-admin startproject创建的项目默认启动

或者在setting.py 文件中

项 INSTALLED_APPS列表中添加:

“django.contrib.sessions",

项MIDDLEWARE_CLASSES列表中添加

”django.contrib.sessions.middleware.SessionMiddleware",

禁用会话:删除上面指定的两个值,禁用回话将节省一些性能消耗

使用seesion(session是字典对象)

启用会话后,每个HttpRequest对象将具有一个seesion属性,他是一个类字典对象

get(key,default=None):根据键获取会话的值(get方法)

clear():清除所有会话(session)

flush():删除当前会话的数据并删除会话的cookie

del request.seesion["member_id"] :删除某一个会话


----------------------------------------------------------

功能展示

在views.py中创建视图

from django.shortcuts import render,redirect

from django.core.urlresolvers import reversee

def inex(request):

        uname=request.session.get("uname")

       return render(request,"booktest/index.html",{"uname":uname}

def login(reuqest):

       return render(request,"booktest/login.html")


#通过用户登陆联系session

def session(reuqest):

     uname=None

    context={“uname”:uname

}

    return render(request,"booktest.session1.html",context)


------------------------------

session就是一个字典对象

所有字典的内容中增加数据的内容(见下图)


重要的一点内容是:在session中增加数据!!!!!

为什么迁移:默认把session存到数据库表结构里面去

迁移的目的是让我们当前项目中模型类对应数据库中的某个表

用get方法写,没有的话,不会报错,直接提示none

可以设置过期时间  清除掉

------------------------------

session中加信息 读信息  删信息

--------------------------

删除session




uname=request.session["myname]

如果这样写的话,找不到session中的键会报错

uname=request.session。get["myname","未登录“]





  

阅读更多
个人分类: Django框架
上一篇我认识的Django之model
下一篇session-Django(4.18)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭