django第7天模板

include标签

模板的共用
a 模板需要到使用到 登陆界面
b 模板需要使用到 登陆界面
可以把登陆界面提取到公共的模板c 为什么要用:
都需要使用相同的界面,减少代码冗余 公共的模板c
html文件
<div class = "login">
详细代码
</div>
css文件
.login{
具体的css样式
} 然后在 a模板和b模板中加载模板c和其样式
<link rel = 'stylesheet' herf='/static/css/login.css'
{% include 'c模板名' %}

inclusion_tag自定义标签

不是完全相同的模块,因为模块的细节不是完全一致,而是模块有相似的结构

自定义inclusion_tag
首先是tag,故跟自定义tag类似
在app文件夹下新建templatetags包!!!!,
在该文件夹下新建一个blog_tags.py文件
from django.template import Library
register = Library() @register.inclusion_tag('public_tag.html',name="h_list")#打开哪个页面,将list传给这个页面,起了别名后,原来的函数名就不起作用了,只能使用别名
def header_list(list):
return {'list':list} 公共模块
public_tag.html
<ul class="public_tag">
<!-- 公用页面板块的详细html代码 -->
{% for foo in list %}
<li>{{ foo }}</li>
{% endfor %}
</ul> 模块a
{% load blog_tags %}
{% with [1, 2, 3, 4, 5] as list %}
{% h_list list %}
{% endwith %} 模块b
{% load blog_tags %}
{% with [10, 30, 50] as list %}
{% h_list list %}
{% endwith %}

母版

前提:多个页面的多个板块相同或相似,只有少部分是自己独有的,将共有的部分全部提出封装,包含了页面大部分结构,所以我们称其母版

如何应用:
1.先封装母版:大部分板块相同 相似的base.html,在特定的位置留出对应的block的接口,如果有自身样式,需要留出样式block
2.每个需要运用母版页面的页面来继承母版
{% extends "base/base.html" %}
3.在自身页面中的任意位置书写block中自身独有的页面内容
{% block right %}
<ul>
<li>hah</li>
<li>hah</li>
<li>hah</li>
</ul>
{% endblock %}
4.如果需要继承母版block中原有的内容
{{block.super}} 母版
{% block right %} 子模块
#继承母版结构
{% extends "base/base.html" %}
#定义自己的独特部分
{% block right %}
<ul>
<li>hah</li>
<li>hah</li>
<li>hah</li>
</ul>
{% endblock %} 继承母版block中原有的内容
{{block.super}}

django第七天(模板的复用性,include标签和母版)的更多相关文章

  1. Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版

    include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...

  2. django内置html模板的extends和include,模板标签{{ ex }}

    base.html内容 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. Django的templates(模板)

    目录 Django的templates(模板) 模板传值 模板过滤器 模板语法之标签 常用标签之for标签 常用标签之if标签 常用标签之with标签 自定义过滤器和标签 模板的继承和导入 模板的导入 ...

  4. 39.Python模板结构优化-引入模板include标签、模板继承使用详解

    在进行模板的构造时,不免有些模板的部分样式会相同,如果每一个模板都是重写代码的话,不仅在做的时候麻烦,而且在后期的维护上,也是相当的麻烦.所以我们可以将模板结构进行优化,优化可以通过:引入模板:模板继 ...

  5. Django框架(七)—— 模板层:变量、过滤器、标签、自定义标签和过滤器

    目录 模板层:变量.过滤器.标签.自定义标签和过滤器 一.模板层变量 1.语法 2.使用 二.模板层之过滤器 1.语法 2.常用过滤器 3.其他过滤器 三.模板值标签 1.for标签 2.if标签 3 ...

  6. Django框架——基础之模板系统(template文件夹)

    ---恢复内容开始--- 1. 常用语法 需要记住两组特殊符号:{{  }}  和 {%  %}. 在运用到变量的时候使用{{  }},如果是跟逻辑相关的话就使用{%  %}. 在Django模板(t ...

  7. day 68 Django基础四之模板系统

      Django基础四之模板系统   本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关 ...

  8. day 54 Django基础四之模板系统

    Django基础四之模板系统   本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法   模板渲染的官方文档 关于模 ...

  9. VC图形绘制双缓存的代码复用性讨论

    在前文中已经讨论了如何实现界面绘制双缓存的问题,前文网址如下: http://www.2cto.com/kf/201111/112429.html 双缓存的主要思路是:先把图形绘制到内存DC中,然后再 ...

随机推荐

  1. python模块之struct

    # #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发 ...

  2. [已读]JavaScript模式

    主要是介绍各种继承和设计模式.第一章是讲编程规范,然后里面讲到了使用new Function替代eval

  3. javaScript中的闭包原理 (译)

    这篇文章通过javaScript代码解释了闭包的原理,来让编程人员理解闭包.它不是写给大牛或使用功能性语言进行编程的程序员的.一旦意会了其核心概念,闭包理解起来并不难.然而,你不可能通过阅读任何有关闭 ...

  4. Objective-C Data Encapsulation

    All Objective-C programs are composed of the following two fundamental elements: Program statements ...

  5. Android学习总结(二)——Service基本概念和生命周期

    好了,前面我们已经学习了Activity的知识,相信大家也有一定的理解,但是还是不能放松,Android四大组件,我们才学习了一个而已,接下我们继续学习Service.计划总结如下内容: 一.Serv ...

  6. SQLite基础教程目录

    SQLite基础教程目录 SQLite主页 SQLite概述 SQLite -安装 SQLite -命令 SQLite -语法 SQLite -数据类型 SQLite -创建数据库 SQLite -附 ...

  7. DAG上的动态规划---嵌套矩形(模板题)

    一.DAG的介绍 Directed Acyclic Graph,简称DAG,即有向无环图,有向说明有方向,无环表示不能直接或间接的指向自己. 摘录:有向无环图的动态规划是学习动态规划的基础,很多问题都 ...

  8. Sublime 设置移动光标快捷键

    发现问题 在使用Sublime和其他编辑器一个很不爽的问题是:在输入一个函数或者有左右的符号或者在引号内时,总是要跳出来,无奈方向键又在主键盘的另一边,只能不断的切换,太特么操蛋,就不能让手指不离开主 ...

  9. vue 不支持 数组Array,只支持get set push,但是正是做tab的时候,用到splice,就都不好用了,最后用v-if,从新渲染 完美解决

    vue 不支持 数组Array,只支持get set push,但是正是做tab的时候,用到splice,就都不好用了,最后用v-if,从新渲染 完美解决

  10. 利用kubeadm快速部署k8s

    内外网络互通 [root@k8s-1 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) 配置k8syum仓库,及Dock ...