Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版
include标签--模版导入
- '''
- 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的
- 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字(接口),在有该版块的页面中直接导入即可
- 语法:{% include '版块页面的路径' %}
- '''
公共的页面版块
- <!-- templates/public.html -->
- <!-- 该页面位公共的页面代码块,所以不需要完整的html页面结构 -->
- <div class="public">
- <!-- 公用页面版块的详细html代码 -->
- </div>
公告页面版块的样式
- /* static/css/public.css */
- /* 该样式文件是为公告页面代码块提供页面布局的css样式 */
- .public {
- /* 具体的css样式块 */
- }
使用公告版块的页面们
- <!-- 拥有公共页面版块的 templates/first.html -->
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>first</title>
- <link rel="stylesheet" href="/static/css/public.css">
- </head>
- <body>
- <!-- 该页面的其他html代码块 -->
- <!-- 加载相同的页面版块 -->
- {% include 'public.html' %}
- <!-- 该页面的其他html代码块 -->
- </body>
- </html>
- <!-- 拥有公共页面版块的 templates/second.html -->
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>second</title>
- <link rel="stylesheet" href="/static/css/public.css">
- </head>
- <body>
- <!-- 该页面的其他html代码块 -->
- <!-- 加载相同的页面版块 -->
- {% include 'public.html' %}
- <!-- 该页面的其他html代码块 -->
- </body>
- </html>
- '''
- link导入静态的css样式
- include标签导入静态的html页面
- '''
inclusion_tag自定义标签--模版导入
- '''
- 前提:与include标签出现的页面需求很类似,但是这些不是完全相同的版块,因为版块内的细节不是完全一致
- 如何运用:
- 1. 先封装相似的页面标签结构,为数据不同且页面标签个数也不同的地方采用Django模版语言写活(数据决定了最终标签个数)
- 2. 自定义inclusion_tag,将封装的页面文件丢给inclusion_tag装饰器,自定义的函数的参数为不同的数据,函数的返回值就是用关键词形式将参数返回
- 3. 在拥有该相似版块的页面中导入自定义tag,并使用自定义tag传入具体实参即可
- '''
公共类似的页面版块
- <!-- templates/public_tag.html -->
- <!-- 该页面位公共的页面代码块,所以不需要完整的html页面结构 -->
- <ul class="public_tag">
- <!-- 公用页面版块的详细html代码 -->
- {% for foo in list %}
- <li>{{ foo }}</li>
- {% endfor %}
- </ul>
- <!-- 注:拥有该公共页面代码块的页面会为其提供存放不同数据的 list变量 -->
自定义inclusion_tag
- # app/templatetags/owen_tags.py
- from django.template import Library
- register = Library()
- @register.inclusion_tag('public_tag.html')
- def header_list(list):
- return {'list': list}
使用公告版块的页面们
- <!-- 拥有公共页面版块的 templates/first_tag.html -->
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>first_tag</title>
- </head>
- <body>
- <!-- 该页面的其他html代码块 -->
- <!-- 加载共同类似的页面版块 -->
- {% load owen_tags %}
- {% with [1, 2, 3, 4, 5] as list %}
- {% header_list list %}
- {% endwith %}
- <!-- 该页面的其他html代码块 -->
- </body>
- </html>
- <!-- 拥有公共页面版块的 templates/second_tag.html -->
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>second_tag</title>
- </head>
- <body>
- <!-- 该页面的其他html代码块 -->
- <!-- 加载共同类似的页面版块 -->
- {% load owen_tags %}
- {% with [10, 30, 50] as list %}
- {% header_list list %}
- {% endwith %}
- <!-- 该页面的其他html代码块 -->
- </body>
- </html>
母版
- '''
- 前提:多个页面的多个版块相同或相似,只有少部分版块是自己独有的,将共有的部分全部提出封装,因为包含了页面大部分版块结构,所以我们称呼其为 母版
- 如何运用:
- 1. 先封装母版:大部分版块相同或相似的base.html,在特定的位置留出相应的block接口
- 2. 每个需要运用母版页面的页面来继承母版 {% extends '母版页面的路径' %}
- 3. 在自己页面中的任意位置书写block中自身独有的页面内容 {{% block block名 %} ... {% endblock %}}
- 4. 如果需要继承母版block中原有的内容,使用 {{ block.super }} 来获取
- '''
公共的母版页面
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>{{ title }}</title>
- <link rel="stylesheet" href="/static/css/base.css">
- {% block style %}
- {# 为继承该母版的页面引入自身样式文件通过的block #}
- {% endblock %}
- </head>
- <body>
- <!-- 母版有有大量的共同版块 -->
- <!-- 母版有有大量的共同版块 -->
- <!-- 母版有有大量的共同版块 -->
- {% block own %}
- {# 为继承该母版的页面提供书写自己页面独有内容的block #}
- {% endblock %}
- <!-- 母版有有大量的共同版块 -->
- <!-- 母版有有大量的共同版块 -->
- </body>
- </html>
页面样式文件均放在static/css中,每个html文件按需导入自己的css文件
- /* static/css/base.css */
- /* static/css/login.css */
- /* static/css/register.css */
继承母版的login页面
- {% extends 'base.html' %}
- {% block style %}
- <link rel="stylesheet" href="/static/css/login.css">
- {% endblock %}
- {% block own %}
- {{ block.super }} {# 继承该母版的block中原有的内容 #}
- <div class="login">登录页面独有的登录版块</div>
- {% endblock %}
继承母版的register页面
- {% extends 'base.html' %}
- {% block own %}
- <div class="register">注册页面独有的注册版块</div>
- {% endblock %}
- {% block style %}
- <link rel="stylesheet" href="/static/css/register.css">
- {% endblock %}
- <!-- 继承母版的页面通过替换母版留出的block块,来实现自己页面独有的版块 -->
- <!-- 替换block块的顺序随意 -->
Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版的更多相关文章
- Django模板语言的复用
一.include标签 由于在项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的,基于这个问题,我们可以采用模板语言复用include标签来帮我们解决,这样就避免 ...
- MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用
MyEclipse默认标签TODO,XXX,FIXME和自定义标签的使用 MyEclipse中的一些特殊的注释技术包括:1. // TODO —— 表示尚未完成的待办事项.2. // XX ...
- java_自定义标签,我的第一个自定义标签!
自定义标签,我的第一个自定义标签! 总共分两步 编写一个实现tag接口的java类,把jsp页面中的java代码移到这个类中,(标签处理器类) 编写标签库描述符(tld)文件,在tld文件中把标签处理 ...
- Eclipse默认标签TODO,XXX,FIXME和自定义标签[转]
http://www.blogjava.net/Guides/archive/2011/11/14/363686.html Eclipse中的一些特殊的注释技术包括: 1. // TO ...
- JSP标准标签库的安装以及自定义标签的创建
JSTL 库安装 Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载 ...
- Eclipse默认标签TODO,XXX,FIXME和自定义标签
1 TODO 表示需要实现,但目前还未实现的功能 2 XXX 勉强可以工作,但是需要改进的功能 3 FIXME 代码是错误的,不能工作,需要修复 4.自定义标签 window-->prefere ...
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- django第七天(模板的复用性,include标签和母版)
django第7天模板 include标签 模板的共用 a 模板需要到使用到 登陆界面 b 模板需要使用到 登陆界面 可以把登陆界面提取到公共的模板c 为什么要用: 都需要使用相同的界面,减少代码冗余 ...
- django -- 模版语言之过滤器Filters和for循环
前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} ...
随机推荐
- MyBatis基础入门《一》环境搭建
MyBatis基础入门<一>环境搭建 参考资料链接:http://www.mybatis.org/mybatis-3/ 使用maven构建项目,STS开发工具,jdk1.8 项目结构: m ...
- Vue项目中跨域的几种方式
经常使用vue + webpack搭建项目,但在请求某些json数据时存在跨域问题,此时有几种修改方法 1. 修改后台header, 但如果只是请求外部数据,是没法修改后台配置的 header('Ac ...
- JAVA8流操作
* Stream 的三个操作步骤: * 1创建Stream * 2中间操作 * 3终止操作 package airycode_java8.nice6; import airycode_java8.ni ...
- Nginx加载ngx_pagespeed模块,加快网站打开的速度
[页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度 ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...
- TP图片上传
//控制器文件 public function index(){ if(!empty($_POST)){ $file = $_FILES["file"]; if(!isset($f ...
- https加密过程
https加密完整过程 step1: “客户”向服务端发送一个通信请求 “客户”->“服务器”:你好 step2: “服务器”向客户发送自己的数字证书.证书中有一个公钥用来加密信息,私钥由“服务 ...
- DX9 空间坐标变换示例代码
// @time 2012.3.25 // @author jadeshu #include <Windows.h> #include <d3d9.h> #include &l ...
- html5-div布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 从windows本地IDE启动远程Linux文件进行调试
1) 因为WingIDE调用putty和plink进行ssh连接,需要先设置putty. 点击下载putty,并解压,把解压路径附到操作系统PATH环境变量中,之后重新启动WingIDE,让它重新读 ...
- 异常检测LOF
局部异常因子算法-Local Outlier Factor(LOF)在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据.异常检测也是数据挖掘的一个方向,用于反作弊 ...