1.模板继承

母版master.html

 {% block title %}{% endblock %}
2 {% block table-cont %}{% endblock %}

子板

{% extends 'master.html' %}
{% block title %}应用列表{% endblock %}
{% block table-cont %}
...
{% endblock %}

2.自定义分页

 #! /usr/bin/env python3
 # -*- coding:utf-8 -*-
 from django.utils.safestring import mark_safe

 class Page:
     def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):
         self.current_page = current_page
         self.data_count = data_count
         self.per_page_count = per_page_count
         self.pager_num = pager_num

     @property
     def start(self):
         return (self.current_page - 1) * self.per_page_count

     @property
     def end(self):
         return self.current_page * self.per_page_count

     @property
     def total_count(self):
         v, y = divmod(self.data_count, self.per_page_count)
         if y:
             v += 1
         return v

     def page_str(self, base_url):
         page_list = []

         if self.total_count < self.pager_num:
             start_index = 1
             end_index = self.total_count + 1
         else:
             if self.current_page <= (self.pager_num + 1) / 2:
                 start_index = 1
                 end_index = self.pager_num + 1
             else:
                 start_index = self.current_page - (self.pager_num - 1) / 2
                 end_index = self.current_page + (self.pager_num + 1) / 2
                 if (self.current_page + (self.pager_num - 1) / 2) > self.total_count:
                     end_index = self.total_count + 1
                     start_index = self.total_count - self.pager_num + 1

         if self.current_page == 1:
             prev = '<a class="page" href="javascript:void(0);">上一页</a>'
         else:
             prev = '<a class="page" href="%s?p=%s">上一页</a>' % (base_url, self.current_page - 1,)
         page_list.append(prev)

         for i in range(int(start_index), int(end_index)):
             if i == self.current_page:
                 temp = '<a class="page active" href="%s?p=%s">%s</a>' % (base_url, i, i)
             else:
                 temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url, i, i)
             page_list.append(temp)

         if self.current_page == self.total_count:
             nex = '<a class="page" href="javascript:void(0);">下一页</a>'
         else:
             nex = '<a class="page" href="%s?p=%s">下一页</a>' % (base_url, self.current_page + 1,)
         page_list.append(nex)

         jump = """
         <input type='text'  /><a class="go" onclick='jumpTo(this, "%s?p=");'> 跳转</a>
     <script>
         function jumpTo(ths,base){
             var val = ths.previousSibling.value;
             location.href = base + val;
         }
     </script>
         """ % (base_url,)

         page_list.append(jump)

         page_str = mark_safe("".join(page_list))

         return page_str

view中:

 def host_list(request):
     if request.method == "GET":
         business_list = models.Business.objects.all()
         hosts_list = models.Host.objects.all()

         current_page = request.GET.get('p', 1)
         current_page = int(current_page)

         val = request.COOKIES.get('per_page_count', 10)
         val = int(val)
         page_obj = pagination.Page(current_page, len(hosts_list), val)
         data = hosts_list[page_obj.start:page_obj.end]
         page_str = page_obj.page_str("/cmdb/host/")

         return render(request, 'host-list.html', {'hosts_list': data,
                                                   'page_str': page_str,
                                                   'business_list': business_list})

3.cookie

获取cookie

request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
    参数:
        default: 默认值
           salt: 加密盐
        max_age: 后台控制过期时间

设置cookie

rep = HttpResponse(...) 或 rep = render(request, ...)

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获取(不是绝对,底层抓包可以获取到也可以被覆盖)

js操作cookie

<script src='/static/js/jquery.cookie.js'></script>
$.cookie("list_pager_num", 30,{ path: '/' });

python【第二十一篇】Django模板继承、分页、cookie验证的更多相关文章

  1. python测试开发django-7.django模板继承(block和extends)

    前言 打开一个网站时候,点导航栏切换到不同的页面,发现导航部分是不变的,只是页面的主体内容变了,于是就可以写个母模板,其它的子页面继承母模板就可以了. 母模板 可以在母模板中添加多个块标签,每个块标签 ...

  2. Python开发【第二十一篇】:Web框架之Django【基础】

    Python开发[第二十一篇]:Web框架之Django[基础]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...

  3. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  4. Python学习---django模板继承180123

    django模板继承  --20180123 a.include 模板标签 b.extend(继承)模板标签 ------include 模板标签 该标签允许在(模板中)包含其它的模板的内容. 标签的 ...

  5. Django 2.0 学习(13):Django模板继承和静态文件

    Django模板继承和静态文件 模板继承(extend) Django模板引擎中最强大也是最复杂的部分就是模板继承了,模板继承可以让我们创建一个基本的"骨架"模板,它可以包含网页中 ...

  6. [py][mx]django模板继承-课程列表页

    课程列表页分析 1,机构类型 2,所在地区 3.排序 学习人数 先分析下 纵观页面,页头页脚都一样. django提供了模板继承. 至少 不同页面的title 面包屑路径 content内容不一致,以 ...

  7. [py]django模板继承

    参考 1.展示arr,d等数据类型 2.逻辑for if / url获取 3.获取内置变量 django模板继承 通过搞一个base.html 这个base.html可以包含两类 block片断 其他 ...

  8. django学习-8.django模板继承(block和extends)

    1.前言 django模板继承的作用:模板可以用继承的方式来实现复用,减少冗余内容. 一般来说,一个网站里一般存在多个网页的头部和尾部内容都是一致的,我们就可以通过模板继承来实现复用. 父模板用于放置 ...

  9. python终极篇 ---django 模板系统

                                                模板系统                                                . MV ...

随机推荐

  1. onSubmit的使用

    在web开发中,我们经常会遇到,一点回车键表单就自己提交的问题,能不能禁用回车键呢,答案是肯定的. Html代码  <from action="" method=" ...

  2. TFS 2010 让安装更简单,也让VSS成为历史

    一转眼VS 2010 RC(Release Candidate)版本号已经公布一月多了,RTM(Release To Manufacturer)版本号也快妥了,已经进入了最后的倒计时,仅仅等4月12号 ...

  3. android 无线模式下使用ADB调试

    改动系统system权限 1. cp sud /system/xbin/sud chmod 755 /system/xbin/sud // note: su chmod 成755 2. cp su / ...

  4. java08 Set

    Set: 无序不可重复,重复则覆盖,判断是不是重复也是通过equals方法判断的.HashSet和TreeSet,HashSet底层是HashMap. public static void main( ...

  5. WEB网站常见受攻击方式及解决办法

    一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.跨站脚本攻击(XSS) 跨站脚本攻击(XSS,Cross-site scripting)是 ...

  6. Android自定义View之ProgressBar出场记

    关于自定义View,我们前面已经有三篇文章在介绍了,如果筒子们还没阅读,建议先看一下,分别是android自定义View之钟表诞生记.android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检 ...

  7. Python开发笔记之正则表达式的使用

    查找正则表达式 import re re_txt = re.compile(r'(\d)*.txt') m = re_txt.search(src) if not m == None: m.group ...

  8. 简单的实现QQ通信功能(一)

    第一部分:数据库的设计,数据集的建立 一:数据库的设计: 1.用户表:包含用户名.密码.昵称.性别.备注.状态.头像代号和最后登录时间. 2.朋友关系表:自增长列为主键列,用户名和好友名,还有朋友的状 ...

  9. js 如何创建一个对象

    有两种简单方法可以创建一个空对象: var obj = new Object(); 和: var obj = {}; 这两种方法在语义上是相同的.第二种更方便的方法叫作“对象字面量(object li ...

  10. UML 行为图之用例图 总结

    学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/  推荐微软的开发软件设计模型 http://msdn.microsoft.com/zh ...