Django中的饼干和会话

  

http协议是无状态的。下一次去访问一个页面时并不知道上一次对这个页面做了什么。

  

无状态的应用层面的原因是:浏览器和服务器之间的通信都遵守HTTP协议。

  

根本原因是:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的套接字连接,而且服务器也会在处理页面完毕之后销毁页面对象。

  

有时需要保存下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等。实现状态保持主要有两种方式:

  

在客户端存储信息使用饼干。在服务器端存储信息使用Session.cookiecookie及其使用

  

 Django中的饼干和会话”> </p>
  <p>曲奇是由服务器生成,存储在浏览器端的一小段文本信息。<br/>
  </p>
  <p> </p>
  <ul>
  <李> 1)以键值对方式进行存储。</李>
  <李> 2)通过浏览器访问一个网站时,会将浏览器存储的跟网站相关的所有饼干信息发送给该网站的服务器.request.COOKIES李</>
  <李> 3)饼干是基于域名安全的.www.baidu.com www.tudou.com </李>
  <李> 4)饼干是有过期时间的,如果不指定,默认关闭浏览器之后饼干就会过期。</李>
  </ul>
  <p> </p>
  </p> <p>设置饼干
  
  <pre类=   def set_cookie(请求):   ”““设置饼干信息”“”   响应=HttpResponse(“设置饼干”)   #设置一个cookie信息,名字为num,值为1   响应。set_cookie (“num”, 1)   #返回响应   返回响应      

获取饼干         def get_cookie(请求):   ”“”获取饼干信息”“”   #取出饼干num的值   num=request.COOKIES (“num”)   返回HttpResponse (num)      

设置饼干过期时间

        def set_cookie(请求):   ”““摄制饼信息”“”   响应=HttpResponse(“设置饼干”)   #设置一个cookie信息,名字为num,值为1,并且设置饼干的过期时间为2周,两种方式   响应。set_cookie (“num”1 max_age=14 * 24 * 3600)   #反应。set_cookie (“num”, 1=datetime.now到期()+ timedelta(天=14))   返回响应      

  

设置多个饼干

        def set_cookie(请求):   ”““摄制饼信息”“”   响应=HttpResponse(“设置饼干”)   #设置多个饼干   响应。set_cookie (“num”, 1)   响应。set_cookie (num2, 2)   返回响应      

  

  

编写login.html         & lt; !DOCTYPE html>   & lt; html lang=癳n”比;   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> Login   & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1”比;   & lt;/head>   & lt; body>   & lt;形式行动="/login_check "方法=皃ost”比;   & lt;标签="用户名"在用户:   & lt;输入类型="文本" id="用户名" name="用户名" value=" https://www.yisu.com/zixun/{{usernam}}”在   & lt;/label>   & lt; br/比;   & lt;标签=懊苈搿痹诿苈?   & lt;输入类型="密码" id="密码" name=懊苈搿北?   & lt;/label>   & lt; br/比;   & lt;输入类型=案囱】颉泵?凹亲 弊4羌亲∮没?   & lt; br/比;   & lt;输入类型="提交" value=" https://www.yisu.com/zixun/登录”比;   & lt;/form>      & lt;/body>   & lt;/html>      

编写login_check函数

        def login_check(请求):   # 1。获取用户名和密码   用户名=request.POST.get(“用户”)   密码=request.POST.get(“密码”)   记得=request.POST.get(“记住”)   打印(用户名、密码)   # 2。进行校验   # 3。返回应答   如果用户名====皔ifchan”和密码“yifchan”:   响应=重定向(“/指数”)   #判断是否需要记住用户名   如果记得==吧稀?   #设置饼干用户名——过期时间为1周   响应。set_cookie(用户名,用户名、max_age=7 * 24 * 3600)   返回响应   其他:   返回HttpResponse(“账号或密码错误”)      

编写登录函数

        def登录(请求):   ”““登录处理函数”“   #获取饼干用户名   如果“用户名”request.COOKIES:   用户名=request.COOKIES(“用户”)   其他:   用户名="   返回渲染(请求,“booktest/登录。html ", {“usernam”:用户名})

Django中的饼干和会话