django学习之- Cookie

cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{‘k‘:‘sfs‘},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当客户端游览器下次访问服务器端时候,会带着这个保存了服务器端的随机字符串的cookie访问服务器,服务器端收到请求后,经过检查此cookie已存在此随机字符串,表示此客户端为已通过认证的状态,可以直接登录。举例:通过帐号登录服务器后,服务器端对cookie进行username标识,等客户端下一次访问时候,服务器端先提取cookie的username,如果不为空,表示为已登录帐号

def login(request)
    u = request.POST.get(‘name‘)
    # 对登录帐号进行验证,如果通过,执行下面
    res = redirect(‘/index‘)
    res.set_cookie(‘username‘,u)
    return res

在index的函数直接提取当前登录的帐号是否匹配
def index(request)
    #提取游览器中的cookie,如果不为空,表示为已登录帐号
    v = request.COOKIES.get(‘username‘)
    if not v:
        return redirect(‘/login‘)
    return render(request,‘index.html‘,{‘curr_name‘:v}

这时,页面使用{{curr_name}}可以直接获取登录帐号名称

游览器查看cookie的方法:这里的cookie可以通过游览器的“审查元素”-> "network" -> "Cookies" 看到

request.COOKIES:包含用户发来的所有数据,这个COOKIES就是一个字典,获取方法有以下2种获取cookis,获取用户发来请求中的cookiesrequest.COOKIES[‘username111‘]request.COOKIES.get(‘username111‘)

设置cookies,服务器端返回给客户端,并写入cookiesresponse = render(request,‘index.html‘)response = redirect(‘/index/‘)# 设置cookie,关闭游览器自动失效response.set_cookie(‘key‘,‘value‘)return response# 设置cookies超过10秒失效,写法response.set_cookie(‘key‘,‘value‘,max_age=10)# 从登录10秒后失效,写法current_time = datetime.datetime.utcnow()current_data = current_time + datetime.timedelta(seconds=10)response.set_cookie(‘key‘,‘value‘,expires=current_data)

rep.set_cookie(key,value,...)rep.set_signed_cookie(key,value,salt=‘加密盐‘,...)参数:            key,              键            value=‘‘,         值            max_age=None,     超时时间            expires=None,     超时时间(IE requires expires, so set it if hasn‘t been already.)            path=‘/‘,         Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问            domain=None,      Cookie生效的域名            secure=False,     https传输            httponly=False    只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

cookie 将字符串进行salt加解密,写法如下:obj = HttpResponse(‘s‘)obj.set_signed_cookie(‘username‘,‘jack‘,salt=‘adfadf‘) # 通过salt进行加密request.get_signed_cookie(‘username‘,salt=‘adfadf‘) # 通过原来的salt进行解密

注意:获取cookies写法:request.COOKIES.get(‘名称‘)  设置cookies写法:response.set_cookie(‘key‘,‘value‘)

实例:userlist通过cookie实现页面显示数量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分页</title>
    <style>
        .page {
            background:#9acfea;
            padding: 5px;
            margin:5px;
        }
        .active{
            background:red;
        }
    </style>
</head>
<body>
    <ul>
        {% for i in li %}
        {% include ‘li.html‘ %}
        {% endfor %}
    </ul>
{#    {{ page_str|safe }}#}
    <div style="float: left;">
        <select id=‘ps‘ onchange="changePageSize(this);">
            <option value="10">10</option>
            <option value="50">50</option>
            <option value="100">100</option>
        </select>
    </div>
    <div style="float: left;">
        {{ page_str }}
    </div>
<script src="/static/jquery-1.12.4.min.js"></script>
<script src="/static/jquery-cookie/jquery.cookie.js"></script>
<script>
    /*select选项框修改为当前显示数量*/
    $(function () {
        var v = $.cookie(‘per_page_count‘,{‘path‘:"/ug/userlist"});
        $(‘#ps‘).val(v)
    });
    /*select选项框选择后自动刷新页面*/
    function changePageSize(ths) {
        var v = $(ths).val();
        $.cookie(‘per_page_count‘,v,{‘path‘:"/ug/userlist"});
        location.reload();
    }
</script>
</body>
</html>

时间: 2024-10-11 20:24:47

django学习之- Cookie的相关文章

Django学习之Cookie和Session

一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除Cookie 4.Cookie版登陆校验 三.Session 1.Session的由来 2.Session流程解析 四.Django中Session操作 1.相关方法 2.Session版登陆验证 4.Django中的Session配置 一.Cookie 1.Cookie的由来 大家都知道HTTP协

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

Python学习---django下的cookie操作 180201

什么是Cookies 什么是Cookies cookies设置的原因: 1. http请求的无记忆性: 2.加快访问速度  3. 减少服务器压力 cookies特点: cookies保存在客户端浏览器上的键值对,且每次访问页面都会带着cookies cookies可以主动清除 cookies也可以被"伪造",可以被别人带着cookies操作你的账号 cookies会根据域名进行分类,不能跨域共享,也就是说百度有百度的,JD有京东的 cookies必须请求数据成功后才能有用哈 浏览器可以

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

Django学习笔记 Day One

Time:2016年01月01日21:38:55 Description: 从今天开始我开始写我的Django学习笔记,因为网络上太多太杂乱的文章,不成系统,还有就是太多的培训机构讲述的东西过于简单,没有深入讲解Django,算是自己的一个小笔记吧,主要参考的是Django1.8的官方文档,地址:www.djangoproject.com,一家之言,大神勿喷! Content: Day One. First exploration of django? 我们在Web开发过程中,常常会遇到编写重复

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写

【转】学习总结--Cookie &amp; Session总结

转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理1)什么是状态管理?   将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理.2)状态管理技术cookie:    a,什么是cookie?   是一种客户端(浏览器)的状态管理技术.   浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来:当浏览器再次访

django学习之Model(四)MakingQuery

上一篇写到MakingQuey中的filter,本篇接着来. 10)-扩展多值的关系 如果对一个ManyToManyField或ForeignKey的表进行filter过滤查询的话,有2中方法可以用.分别是: #1 Blog.objects.filter(entry__headline__contains='Lennon', entry__pub_date__year=2008) #2 Blog.objects.filter(entry__headline__contains='Lennon')

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名