python之路_day70_django中cookie介绍

一、django模板系统

1、母板

  为其他子模板文件所共有的内容文件,各子模板的不同部分通过模板语言占位。注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换,如下例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>Title</title>
    <link rel="stylesheet"  href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="/static/sweetalert/sweetalert.css">
  {#用于存放每个页面特别需要的css引用#}
    {% block page-css %}

    {% endblock %}
    <style>
        body{
            padding-top: 70px;
        }
    </style>
</head>
<body>
{% include ‘navbar.html‘ %}
<div class="container-fluid">
    <div class="row">
        <div class="col-sm-2" style="background-color: #cccccc;height: 710px">
            <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
                <div class="panel panel-default">
                    <div class="panel-heading" role="tab" id="headingOne">
                        <h4 class="panel-title">
                            <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"
                               aria-expanded="true" aria-controls="collapseOne">
                                学校简介
                            </a>
                        </h4>
                    </div>
                    <div id="collapseOne" class="panel-collapse collapse in" role="tabpanel"
                         aria-labelledby="headingOne">
                        <div class="panel-body">
                            <ul>
                                <li>校园概况</li>
                                <li>学校历史</li>
                                <li>校园图片</li>
                                <li>领导关怀</li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="panel panel-default">
                    <div class="panel-heading" role="tab" id="headingTwo">
                        <h4 class="panel-title">
                            <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion"
                               href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                                行政单位
                            </a>
                        </h4>
                    </div>
                    <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel"
                         aria-labelledby="headingTwo">
                        <div class="panel-body">
                            <ul>
                                <li>liniux学院</li>
                                <li>python学院</li>
                                <li>luffy学城</li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="panel panel-default">
                    <div class="panel-heading" role="tab" id="headingThree">
                        <h4 class="panel-title">
                            <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion"
                               href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
                                管理系统
                            </a>
                        </h4>
                    </div>
                    <div id="collapseThree" class="panel-collapse collapse" role="tabpanel"
                         aria-labelledby="headingThree">
                        <div class="panel-body">
                            <ul>
                                <a href="/classList/">
                                    <li>班级管理</li>
                                </a>
                                <a href="/teacherList/">
                                    <li>老师管理</li>
                                </a>
                                <a href="/studentList/">
                                    <li>学生管理</li>
                                </a>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="col-sm-9">
        <!--面板内容开始 每个页面从这里开始不同-->
            {% block page-main %}

            {% endblock %}
        <!--面板内容结束-->
        </div>
    </div>
</div>
<!--模态框开始 每个页面的模态框也不同-->
{% block page-modal %}

{% endblock %}
<!--模态框结束-->
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script src="/static/sweetalert/sweetalert.min.js"></script>
{#用于存放每个页面特别需要的js引用#}
{% block page-js %}

{% endblock %}
</body>
</html>

  在上例母板中,通过在母板中使用{% block  xxx %}来定义"块"。在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

2、母板继承

  在子页面中在页面最上方使用下面的语法来继承母板,其中‘layouts.html为母板文件

{% extends ‘layouts.html‘ %}  

  然后在子页面中按照母板文件中预留的模板语言进行补充子页面不同的内容,如下例:

{% extends ‘layouts.html‘ %}
{% block page-main %}
    <div class="panel panel-default">
                <div class="panel-heading">
                    <h1 class="panel-title" style="color: red">班级管理系统</h1>
                </div>
                <div class="panel-body">
                    <form class="form-inline">
                        <div class="form-group">
                            <input type="text" class="form-control" id="exampleInputName2" placeholder="搜索">
                        </div>
                        <button type="button" class="btn btn-default">搜索</button>
                        <a href="/addClass/" type="button" class="btn btn-success pull-right">添加信息</a>
                        <button type="button" class="btn btn-success pull-right" data-toggle="modal"
                                data-target="#myModal">
                            模态框添加
                        </button>
                    </form>
                    <div style="padding-top: 10px">
                        <table class="table table-striped table-bordered">
                            <thead>
                            <tr>
                                <th>序号</th>
                                <th>班级名</th>
                                <th>操作</th>
                            </tr>
                            </thead>
                            <tbody>
                            {% for class in class_list %}
                                <tr>
                                    <td>{{ class.cid }}</td>
                                    <td>{{ class.cname }}</td>
                                    <td>
                                        <a type="button" class="btn btn-success modal_edit">
                                            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> 模态框编辑
                                        </a>
                                        <a href="/editClass/?class_id={{ class.cid }}" type="button"
                                           class="btn btn-success">
                                            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span> 编辑
                                        </a>
                                        <a href="/deleteClass/?class_id={{ class.cid }}" type="button"
                                           class="btn btn-danger">
                                            <span class="glyphicon glyphicon-remove" aria-hidden="true"></span> 删除
                                        </a>
                                    </td>
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
                    </div>
                    <div class="pull-right">
                        <nav aria-label="Page navigation">
                            <ul class="pagination">
                                <li>
                                    <a href="#" aria-label="Previous">
                                        <span aria-hidden="true">&laquo;</span>
                                    </a>
                                </li>
                                <li><a href="#">1</a></li>
                                <li><a href="#">2</a></li>
                                <li><a href="#">3</a></li>
                                <li><a href="#">4</a></li>
                                <li><a href="#">5</a></li>
                                <li>
                                    <a href="#" aria-label="Next">
                                        <span aria-hidden="true">&raquo;</span>
                                    </a>
                                </li>
                            </ul>
                        </nav>
                    </div>
                </div>
            </div>
{% endblock %}
{% block page-modal %}
    {#添加模态框#}
<div class="modal fade" id="myModal" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                <h2 class="modal-title">添加班级</h2>
            </div>
            <div class="modal-body">
                <form class="form-horizontal">
                    <div class="form-group">
                        <label for="inputclassname2" class="col-sm-2 control-label">班级名称</label>
                        <div class="col-sm-10">
                            <input type="text" class="form-control" id="inputclassname2" placeholder="班级名称">
                            <span id="error-msg" class="help-block"></span>
                        </div>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                <button id="modal-submit" type="button" class="btn btn-primary">提交</button>
            </div>
        </div>
    </div>
</div>
{#编辑模态框#}
<div class="modal fade" id="editModal" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
                <h2 class="modal-title">编辑班级</h2>
            </div>
            <div class="modal-body">
                <form class="form-horizontal">
                    <input type="text"id="edit-cid" style="display: none">
                    <div class="form-group">
                        <label for="edit-cname" class="col-sm-2 control-label">班级名称</label>
                        <div class="col-sm-10">
                            <input type="text" class="form-control" id="edit-cname" placeholder="班级名称">
                            <span class="help-block"></span>
                        </div>
                    </div>

                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
                <button id="edit-modal-submit" type="button" class="btn btn-primary">提交</button>
            </div>
        </div>
    </div>
</div>
{% endblock %}
{% block page-js %}
    <script src="/static/modalClass.js"></script>
{% endblock %}

3、组件

  可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可,这种文件称为组件。

二、cookie介绍

  cookie的应用主要为就是登陆后,不用登陆就可以看其他的内容,如天猫页面中登陆后不需要登陆即可看个人中心等不同版块,还有一个常见的应用为7天免登陆等,他主要的实现的原理为:服务端可以在用户浏览器写Cookie --->响应头里面会有 Set-Cookie,登陆之后,是保存在浏览器端的“键值对”,浏览器每次发请求的时候会携带Cookie,通过判断请求中是否有这个cookie值,决定是否让其请求的页面再次登录。
1、设置cookie值

  设置加盐的cookie:

response.set_signed_cookie("login2", "1", max_age=10, salt="PythonFullstackS7")

  设置一般的cookie:

response.set_cookie("login","1",max_age=10)

  除了上述基本的key,value键值对外,还有如下的参数,不设置默认没有设置那些限制。

max_age=None,   --> 超时时间  多少秒之后cookie失效
expires=None,   --> 超时时间  具体时间cookie失效
path=‘/‘,       --> 作用URL

domain=None,    --> 域名
secure=False,   -->加密用的 Https
httponly=False  --> JS代码不能读取cookie,只能浏览器发请求时携带cookie

2、获取cookie值

 通过给每个请求链接加装饰器的形式,在浏览器请求其他链接的时候,通过后端在装饰器中获取cookie值进行判断是否有登录过,如果没有cookie值,则表明没有登录,或者之前登录保存的cookie值失效,需要重新登录后在返回请求内容。如下例:

  上述中分别为两种获取cookie值的方式,分别为取一般cookie值和取加盐cookie值的方式。

  

时间: 2024-10-10 06:16:50

python之路_day70_django中cookie介绍的相关文章

Python之路66-Django中的Cookie和Session

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

python之路_day78_django中ajax应用

一.Ajax介绍 Ajax(Asynchronous Javascript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML). 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求: 异步交互:客户端发出一个请求后,无需等待服务器响应结束,就可以发出第二个请求. Ajax除了异步的特点外,还有一个就是:浏览器页面局部刷新:(这一特点给用户的感

python之路_day107_django中url反向解析及数据库连接

一.url反向解析 在正式介绍反向解析之前,我们首先介绍一下在django中的url参数,如下为我们url实例,其中name参数就是其别名,也就是我们接下来讲解的反向解析中所依靠的参数. 1.模板中反向解析 在我们的前端页面上,如form表单,我们通常会指定提交的路径,但是以往我们都是将路径写死,这显然不是很合理,因为当url中的路径需要改变的时候,我们又需要逐一去更改页面.这样不合理.所以我们就要用到url的别名进行反向解析. 语法: {% url 'url的别名' %} 实例如下: 2.视图

Python之路---------&gt;Python介绍

一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成

python之路1:介绍和入门

Python介绍 python2和python3的区别 安装 Hello World程序 变量 字符编码 用户输入 .pyc是什么 控制流语句 一. Python介绍 Python的创始人为Guido van Rossum,1989年的圣诞节期间,他为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而有效地实现面向对象编程.Python简洁的语法和对动态输入的支持,再加上解释性语言的本

[zz]【整理】Python中Cookie的处理:自动处理Cookie,保存为Cookie文件,从文件载入Cookie

http://www.crifan.com/python_auto_handle_cookie_and_save_to_from_cookie_file/ #!/usr/bin/python # -*- coding: utf-8 -*- """ Function: [整理]Python中Cookie的处理:自动处理Cookie,保存为Cookie文件,从文件载入Cookie http://www.crifan.com/python_auto_handle_cookie_an

Http中Cookie和Session介绍

先介绍下B/S系统的工作的完整过程.首先客户端的浏览器发出请求,服务端的webserver接受到请求后,调用相关请求的页面进行处理,处理完后将结果发送给客户端的浏览器进行显示.只能是浏览器向webserver发送请求,webserver响应请求,而webserver不会主动的向客户端发送信息.因为它不知道向谁发送哪些信息.把服务端比喻成一个矜持的小姑娘,你问她要什么她才会回答什么.浏览器与webserver的交互是暂时的,当请求响应的过程完毕后,这种连接也随之结束.换句话说webserver根本

Python的Django框架中的Cookie相关处理

Python的Django框架中的Cookie相关处理 浏览器的开发者在很早的时候就已经意识到, HTTP's 的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生. cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies 来看看它是怎么工作的. 当你打开浏览器并访问 google.com ,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样: GET / HTTP/1.1 Host:

python 网络爬虫session处理cookie,代理IP,云打码介绍

一.基于requests模块的cookie操作(session处理cookie) cookie概念:当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie. cookie作用:我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面.我们经常会在此时设置30天内记住我,或者自动登录选项.那么它们是怎么记录信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服务器设置的,保存在浏览器中,