17)django-模板的继承与导入
情况1:通常写页面都有个模板用来框定头部LOGO页面,左侧导航菜单,只有右部的内容不同。如果不使用模板就大量重复工作。
特别如果头部或者左侧导航需要修改或者添加,所有页面都需要修改。django 通过模板继承解决。
情况2:一个页面如果内容特别多,不可能都一起写同一个页面。比如京东首页内容非常多。如何解决了?django通过include导入其他页面。
一:模版继承
1)继承使用
步骤1:母板里写入block,就可以被继承,content是名称
{% block title %}
{% endblock%}
{% block “content“ %}
{% endblock%}
步骤2:子页面通过extends指定继承那个模板
{% extends 'master.html'%} #继承那个模板
{% block “content“ %} 这个地方就是替换模板block “content“
<ul>
{% for i in u%}
<li>{{i}}</li>
{%endfor%}
{% endblock%}
2)如果子页面有自己的css,js 怎么用了?
A)如果是在子页面写CSS和JS,CSS就不是在头部了,而JS也不是在<body>之前,假如要引用jquery,子页面写的JS会在jquery引用前面,就会不生效
B)继承CSS与JS都是共有的。
解决方法:
在模板里css 和js位置在写个block块。然后在block里引入,在这个block写自己的js和css
注:block和顺序没有关系
二:模板引入使用
3)一个页面只能继承一个模板,如何解决了?如何使用多个模板,或者引入其他页面
<% include "a.html" %> 可以引用多次
4)模板,include,子页面怎么渲染?
先把自己渲染成字符串,在拿模板和include渲染,所以不存在渲染问题(可以把子页面继承include当做一个整页面)
三:示例
#url.py
url(r'^tpl1$',views.tpl1),
url(r'^tpl2$',views.tpl2),
url(r'^tpl3$',views.tpl3), #views.py def tpl1(request):
u=[1,2,3]
return render(request,"tp1.html",{"u":u}) def tpl2(request):
name="alex"
return render(request,"tp2.html",{"name":name}) def tpl3(request):
status="已修改"
return render(request,"tp3.html",{"status":status}) #模块:master.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>
{% block title %}{% endblock %} <!--这里用来设置标题-->
</title>
<link rel="stylesheet" href="/static/common.css"> {% block css %}<!--这里用来设置子页面自己的css-->
{% endblock %}
</head>
<body>
{% block content %}<!--这里用来设置子页面自己的内容-->
{% endblock %}
<script src="/static/js/jquery-1.12.4.js"></script>
<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
{% block js %}<!--这里用来设置子页面自己的js-->
{% endblock %}
</body>
</html> #子页面:tp1.html
{% extends "master.html" %} <!-- 继承那个模板--> {% block title %}
用户管理
{% endblock %} {% block css %}
<style>
body{
background-color: aqua;
}
</style>
{% endblock %} {% block content %}
<h1>用户管理</h1>
<ul>
{% for i in u %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{% endblock %}
#子页面:tp2.html
{% extends "master.html" %} {% block content %}
<h1>修改密码{{ name }}</h1>
{% include "tp3.html" %} <!-- 引入其他页面-->
{% endblock %} #include页面:tp3.html
<div>
<input type="text">
<input type="button" value="++">
</div>
17)django-模板的继承与导入的更多相关文章
- Django 你需要掌握的模型层(标签、过滤器、模板的继承与导入)
Django 模型层(标签.过滤器.模板的继承与导入) 好文章来自超哥:https://www.cnblogs.com/guanchao/p/11006062.html 过滤器/自定义过滤器 模板 ...
- Django模板的继承与模板的导入
目录 一:模版的继承 1.什么是模板继承? 2.使用继承流程原理 3.模板继承语法 二:模板的继承使用 1.案例需求 2.总结模板继承 三:模版的导入 1.模板导入 2.模板导入格式 3.模板导入使用 ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{ }} 变量相关{% %} ...
- Django 模型层(标签、过滤器、模板的继承与导入)
过滤器/自定义过滤器 模板语法中的过滤器类似于python中的内置方法,在我们把数据从后端通过rander传入到前端html文件中之后,在前端我们可以通过模板语法,对传入的数据再进行以通骚操作. 首先 ...
- django的模板的继承与导入
1.模板继承 母版中需要继承的地方: {% block content %} {% endblock %} 对应的子版中文件最开头写: {% extends 'head_demo.html' %} 然 ...
- Django模板的继承
一.extend 1.extend继承模板 2.一个文件中只能继承一个模板 3.extend继承模板中的所有内容,模板的内容包括:html的head和body ,eg:
- 19 01 17 Django 模板 返回一个页面
模板 问题 如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为HttpResponse()的参数吗?这样定义 ...
- Django模板及表查询笔记
模板层 后端朝html页面传递数据 两种给html页面传递数据的方式 第一种: render(request,'index.html',{'user_list':user_list}) 第二种 ren ...
- Django模板层学习笔记
一. 前言 Django模板层的知识包括标签.过滤器.自定义标签.自定义过滤器以及inclusion_tag,最重要的是模板的继承和导入. 首先模板层最重要的是模板语法,之前我们提过涉及到变量用模板语 ...
随机推荐
- [Windows] [VS] [C] [取得指针所指内存的十六进制形式字符串]
接口定义如下: #include <Windows.h> // 取得指针所指内存的十六进制形式字符串,size指定字节长度 #define Mem_toString(address, si ...
- 三十七、Linux 线程——线程清理和控制函数、进程和线程启动方式比较、线程的状态转换
37.1 线程清理和控制函数 #include <pthread.h> void pthread_cleanup_push(void (* rtn)(void *), void *arg) ...
- MVC |分部视图 PartialView()
介绍如何定义 其实它和普通视图没有多大区别,只是创建分部视图的时候视图里没有任何内容,你需要什么标签你自己加.第二就是分部视图不会执行_ViewStart.cshtml中的内容) 控制器 Partia ...
- 利用ssh操控远程服务器
这里的”远程”操控的方法实际上也不是真正的远程.,這此操作方法主要是在一个局域网内远程操控电脑 (在一个路由器下).可以把它做成在互联网中的远程操控, 不过技术难度上加了一个等级, 如果你想是想人在公 ...
- Linux 下杀毒可用工具 clamav
clamav 杀毒工具:Linux下可用的杀毒工具: 下载地址: 最新 包 0.101 官网下载地址:http://www.clamav.net/downloads最新包地址: https://cla ...
- Docker 容器CPU设置
CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况.使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少.CPU使用率的高低与你的CPU强弱有直接关系. ...
- UML之涉众/参与者(角色/执行者)(Actor)/业务主角(BusinessActor)/业务工人(BusinessWorker)/用户/角色辨析【图解】
参考文档: [业务建模](http://www.baike.com/wiki/%E4%B8%9A%E5%8A%A1%E5%BB%BA%E6%A8%A1) [UML 核心元素之参与者](http://w ...
- Hadoop之HDFS思维导图
- 将web项目导入到eclipse中常见错误
将web项目导入到eclipse中常见错误 错误1:string cannot be resolved to a type 原因:这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的 ...
- Vue.js 技术揭秘(学习) 深入响应式原理 nextTick外传
microTask mutationObserve. promise.then macroTask setImmediate. messageChannnel.setTimeout.postMess ...