Django框架(七)-- 模板层:模板导入、模板继承、静态文件
一、模板导入
要复用一个组件,可以将该组件写在一个文件中,在使用的时候导入即可
在模板中使用
1、语法
{% include '模板名字' %}
2、使用
- ad.html页面
<div class="adv">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Panel title</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">Panel title</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
<div class="panel panel-warning">
<div class="panel-heading">
<h3 class="panel-title">Panel title</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
</div>
- base.html页面,将ad模板导入使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
</head>
<body>
<div class="header"></div> <div class="container">
<div class="row">
<div class="col-md-3">
<!-- 利用include导入模板 -->
{% include 'adv.html' %}
</div>
<div class="col-md-9"></div>
</div>
</div>
</body>
二、模板的继承
Django模版引擎中最强大也是最复杂的部分就是模版继承了。模版继承可以让您创建一个基本的“骨架”模版,它包含您站点中的全部元素,并且可以定义能够被子模版覆盖的 blocks 。
1、使用模板的继承
(1)写一个母版
写一个母版,留有一个或多个可扩展的区域。母版中主要是使用空的block完成页面的骨架搭建
{% block 名字 %}
可以内容
{% endblock %}
<!-- 母版 base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css"/>
<title>{% block title %}My amazing site{% endblock %}</title>
</head> <body>
<div id="sidebar">
{% block sidebar %}
<img href='11111111111.jpg'>
{% endblock %}
</div> <div id="content">
{% block content %}{% endblock %}
</div>
</body>
</html>
(2)在子模板中使用
子模板主要是用内容填充母版中空的block
# extends 告诉模板引擎,这个模板继承了另一个模板
{% extends "base.html" %} {% block 名字 %}
子模板的内容
{% endblock 名字 %}
<!-- 子模板 -->
{% extends "base.html" %} {% block title %}My amazing blog{% endblock %} {% block content %}
{% for entry in blog_entries %}
<h2>{{ entry.title }}</h2>
<p>{{ entry.body }}</p>
{% endfor %}
{% endblock %}
2、强调(注意点)
- 子模板如果没有重写母版中的block,那么就用父级的block的内容。如案例中的 sidebar block没用重写,那么使用母版中sidebar block中的内容
- 一旦子模板重写了模板中的盒子,即使母版中block有内容,也会覆盖母版中的内容显示子模板中的内容
- 在base模版中设置越多的
{% block %}
标签越好。请记住,子模版不必定义全部父模版中的blocks,所以,你可以在大多数blocks中填充合理的默认内容,然后,只定义你需要的那一个。多一点钩子总比少一点好。 - 为了更好的可读性,你也可以给你的
{% endblock %}
标签一个 名字 。例如:
{% block content %}
...
{% endblock content %}
- 不能在一个模版中定义多个相同名字的
block
标签。
三、静态文件
1、在配置文件settings中配置过静态文件
STATIC_URL = '/static/' STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static')
]
2、导入使用静态文件
在静态文件 static 中,可以放置css文件、js文件、img文件、第三方库文件等,要使用这些静态文件,需要将它们导入到模板中。
<link rel="stylesheet" href="/static/utils/bootstrap-3.3.7-dist/css/bootstrap.css">
该方法已经写死了路径,一旦配置文件中的 STATIC_URL 发生改变,就无法找到文件
3、动态获取
(1)方法一:使用 static 标签函数
{% load static %}
#static返回值,会拼上传参的路径
{% static "参数用来传参" %}
# 案例,利用static函数,在函数中拼接好路径,return到模板中
<link rel="stylesheet" href="{% static 'css/mycss.css' %}">
(2)方法二:使用 get_static_prefix 标签
{%load static%}
# get_static_prefix返回值是:静态文件的地址,相当于/static/
# 注意在css前面不要加‘ / ’
{% get_static_prefix %}css/mycss.css
<link rel="stylesheet" href="{% get_static_prefix %}css/mycss.css">
Django框架(七)-- 模板层:模板导入、模板继承、静态文件的更多相关文章
- [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]
[Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...
- day05 django框架之路由层
day05 django框架之路由层 今日内容概要 简易版django请求声明周期流程图(重要) 路由匹配 无名有名分组 反向解析 无名有名解析 路由分发 名称空间 伪静态 虚拟环境 简易版djang ...
- Django框架 之 Form表单和Ajax上传文件
Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...
- Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件
模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...
- Django day07 (一) 模板的导入 母板的继承 静态文件配置
一:模板的导入 -写一个模板 {% include '模板的名字' %} 二:母板的继承 -写一个母版(可以留多个盒子) {% block 名字 %} / {% endblock %} 三:静态文件配 ...
- (9)模板层 - templates(模板语言、语法、取值、过滤器、变量的使用)
django的模板语言:DTL 模板语言的变量传入 这个是标签 {{ 变量名 }} {{ 变量名 }} #模板语言的替换可以在模板中的任意位置生效 PS:通过 . 可以做深度查询 模板语言的过滤器 ...
- Python19/1/11--标签与过滤器/Django模块导入继承/静态文件配置
1 模板语言之变量: -{{ }} 相当于执行了print -深度查询 . 如果是方法,不能加括号,不能传参数2 过滤器 {{ 变量|过滤器的名字:'参数' }} -add -default -s ...
- Django框架开发web网站的网页优化—页面静态化
网站优化-页面静态化 1)概念 提前将页面所用到的数据从数据库查询出来,然后生成一个静态页面,之后用户来访问的时候,直接返回静态页面. 举例:首页静态化:获取首页用到的数据表中的数据,生成静态首页in ...
- django在关闭debug后,admin界面 及静态文件无法加载的解决办法
当debug为true的时候,ALLOWED_HOSTS是跳过不管用的.所以这里需要将debug关掉,令debug=false,ALLOWED_HOSTS=[ '*' ]表示所有的主机都可以访问 开启 ...
- Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 ...
随机推荐
- zz深度学习中的注意力模型
中间表示: C -> C1.C2.C3 i:target -> IT j: source -> JS sim(Query, Key) -> Value Key:h_j,类似某种 ...
- 【目标检测】SSD:
slides 讲得是相当清楚了: http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf 配合中文翻译来看: https://www.cnb ...
- LG4171/BZOJ1823 「JSOI2010」满汉全席 2-SAT
问题描述 LG4171 BZOJ1823 题解 显然,每个评委对每个材料的满式/汉式要求是对\(n\)个元素的\(0,1\)取值限制. 显然想到\(\mathrm{2-SAT}\) 于是就可以切掉了. ...
- 使用java2Word生成Word文档打不开报错 存在非法字符xml
今天也不知道是该吐槽Java2word还是我的eclipse,总之就是使用Java2Word生成文档的时候文档生成没问题,但是生成的Word文档打不开还报错,存在非法字符xml,好扎心.终于找到了解决 ...
- e.preventDefault()
定义和用法 取消事件的默认动作. 语法 event.preventDefault() 说明 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 ...
- linux翻页及字符串搜索操作
向下翻动一屏幕: space, ctrl + f, ctrl + v, ctrl + F 向下翻动半屏: d, ctrl + D 向下翻动一行: 回车, e, j 向上翻动一屏幕: b, ctrl + ...
- 忍者钩爪 ( ninja) 题解———2019.10.19
可以到这里测..嘿嘿嘿 题目: [问题 描述 ] 小 Q 是一名酷爱钩爪的忍者, 最喜欢飞檐走壁的感觉, 有一天小 Q 发现一个练习使用钩 爪的好地方,决定在这里大显身手. 场景的天花板可以被描述为一 ...
- CF1168C And Reachability(DP)
首先定义 $g[i][j]$ 表示 $i$ 前面(不包括 $i$)第一个第 $j$ 位是 $1$ 的数的位置.可以随便转移. 再定义 $f[i][j]$ 表示 $i$ 前面(包括 $i$)第一个第 $ ...
- 安装Oracle 11g时遇到“【INS-13001】此环境不满足最低配置”的问题解决
一.问题如下: win10一般容易出现这个问题,可能是版本兼容的关系. 二.解决方法: 在Oracle 11g解压出的文件夹下寻找cvu_prereq.xml文件: 路径:database\stag ...
- [FY20 创新人才班 ASE] 第 1 次作业成绩
作业概况 条目 备注 作业链接 [ASE高级软件工程]热身作业! 提交人数 19 未完成人数 2 满分 10分 作业情况总结 本次作业作为大家软工课程的第一次作业,完成度相当不错(尤其是在国外暑研/赶 ...