Django项目之cookie+session

原文:https://www.cnblogs.com/sss4/p/7071334.html

HTTP协议 是短连接、且状态的,所以在客户端向服务端发起请求后,服务端在响应头 加入cokie响应给浏览器,以此记录客户端状态;

cook是来自服务端,保存在浏览器的键值对,主要应用于用户登录;

cookie如此重要!!那么如何在Django应用cookie呢?cookie又有什么缺陷呢?

一、Django应用cookie

参数介绍

1、max_age=1 :cookie生效的时间,单位是秒

2、expires:具体过期日期  

3、path=‘/‘:指定那个url可以访问到cookie;‘/’是所有; path=‘/‘

4、 domain=None(None代表当前域名):指定那个域名以及它下面的二级域名(子域名)可以访问这个cookie

5、secure=False:https安全相关

6、httponly=False:限制只能通过http传输,JS无法在传输中获取和修改

设置cookie

1.普通

obj.set_cookie("tile","zhanggen",expires=value,path=‘/‘ )

2.加盐

普通cookie是明文传输的,可以直接在客户端直接打开,所以需要加盐,解盐之后才能查看

obj.set_signed_cookie(‘k‘,‘v‘,salt="zhangge")

获取cookie

1、普通

request.COOKIES.get(‘k’)

2、加盐

cookies=request.get_signed_cookie(‘k‘,salt=‘zhanggen‘)

cookie之登录应用

1.简单应用:longin界面和index界面,访问index界面先判断是否登录,若登录可以访问,若未登录跳转到登录界面。

【代码】

#settings.py文件 :设置静态文件路径,将css样式放到该路径中

STATIC_URL = ‘/static/‘

STATICFILES_DIRS = (
    os.path.join(BASE_DIR,‘static‘),
)

#urls.py文件:设置url路由

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^identify/‘, views.identify),
    url(r‘^login/‘, views.login),
    url(r‘^index/‘, views.index),
]

#views.py文件

def login(request):
    if request.method == "GET":
        return render(request,‘login.html‘,{‘msg‘:‘‘})
    elif request.method == ‘POST‘:
        username = request.POST.get(‘username‘)
        password = request.POST.get(‘password‘)
        if username == ‘lijun25‘ and password == ‘lijun25‘:
            obj = redirect(‘/index/‘)
            obj.set_cookie(‘1234567‘,username,max_age=10)
            return obj
        else:
            return render(request, ‘login.html‘,{‘msg‘:‘用户名或密码错误‘})

def index(request):
    v = request.COOKIES.get(‘1234567‘)
    print v
    if v:
        return render(request, ‘index.html‘)
    else:
        return redirect(‘/login/‘)

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>后台管理</title>
<link href="/static/login.css" rel="stylesheet" type="text/css" />

</head>

<body>
<div class="login_box">
      <div class="login_l_img"><img src="/static/images/login-img.png" /></div>
      <div class="login">
          <div class="login_logo"><a href="#"><img src="/static/images/login_logo.png" /></a></div>
          <div class="login_name">
               <p>后台管理系统</p>
          </div>
          <form method="post">
              <input name="username" type="text"  value="用户名" onfocus="this.value=‘‘" onblur="if(this.value==‘‘){this.value=‘用户名‘}">
              <span id="password_text" onclick="this.style.display=‘none‘;document.getElementById(‘password‘).style.display=‘block‘;document.getElementById(‘password‘).focus().select();" >密码</span>
              <input name="password" type="password" id="password" style="display:none;" onblur="if(this.value==‘‘){document.getElementById(‘password_text‘).style.display=‘block‘;this.style.display=‘none‘};"/>
              <input value="登录" style="width:100%;" type="submit">
              <div color="red" align="center">{{ msg }}</div>
          </form>
      </div>
</div>
<div style="text-align:center;">
</div>
</body>
</html>

login.html

【验证】

登录成功后可以看到浏览器上的定义的一对键值,会跳转到index页面,过10s钟后再cookies会失效,刷新会返回到登录界面重新认证

原文地址:https://www.cnblogs.com/linux-chenyang/p/9597617.html

时间: 2025-01-17 05:16:43

Django项目之cookie+session的相关文章

Django学习手册 - cookie / session

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被任

Django组件-cookie,session

昨日内容回顾: json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() 反序列化方法:JSON.parse() ajax $.ajax({ url:"", type:"", data:{}, // 默认contentType="urlencoded" success:function(data){ } }) 一.Djang

Django中的cookie与session

cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来自同一人的连续请求.上图很明显的展示了Django的session与cookie的实现原理.服务器会生成两份相同的cookie字符串,一份保存在本地,一份发向求情的浏览器.浏览器将收到的cookie字符串保存下来,当下次再请求时,会将这段cookie发送到服务器,服务器得到这段cookie会与本地保

Django之cookie,session,认证系统auth

COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了. cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户

Django实现cookie&amp;session以及认证系统

COOKIE&SESSION 知识储备 由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是"谁"了. cookie虽然在一定程度上解决了"保持状态"的需求,但是由于cookie本身最大支持4096字节,以及co

django之cookie &amp; session

(一)cookie 1.获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 参数: default: 默认值 salt: 加密盐 max_age: 后台控制过期时间 2.设置Cookie: rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,v

Django框架 之 Cookie、Session整理补充

浏览目录 Django实现的Cookie Django实现的Session 一.Django实现的Cookie 1.获取Cookie 1 2 3 4 5 6 request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)     #参数:         default: 默认值            salt: 加密盐         max_age: 后台控制过

第十一章 Django框架学习——Cookie和session

第十一章 Django框架学习--Cookie和session 一.Cookie简介 二.装饰器版登录校验 三.session简介 四.如何在CBV中使用装饰器 一.Cookie简介 什么是Cookie(what): Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的原理:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上Cookie,这样服务器就能

django 中的cookie和session

cookie: 1,cookie是什么? cookie是服务器让浏览器保存在浏览器上的一组键值对 2,为什么要有cookie? http 是无状态,每次请求之间没有任何关系,无法保持状态 3,cookie的特点: 1,服务器让浏览器设置的 2,设置之后每次访问相同的页面带上cookie 4,django中的操作cookie 1,设置cookie rep = redirect('/idnex/') rep.set_cookie(key,value,max_age=1000) rep.set_sig