---恢复内容开始---

母板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Title</title>{% block page-css %}{% endblock %}
</head>
<body><h1>这是母板的标题</h1>{% block page-main %}{% endblock %}
<h1>母板底部内容</h1>
{% block page-js %}{% endblock %}
</body>
</html>

注意:我们通常会在母板中定义页面专用的CSS块和JS块,方便子页面替换。

继承母板

在子页面中在页面最上方使用下面的语法来继承母板。

{% extends "base.html"%}

例子:

只换掉右侧内容

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>母板</title><style>*{padding: 0;margin: 0;}.head{height: 50px;width: 100%;background-color: deepskyblue;}.left{height: 1000px;width: 20%;background-color: darkgrey;float: left;}</style></head>
<body>
<div class="head">这是导航条</div>
<div class="left">这是左侧菜单</div>{# 母板是变的:右侧内容#}
{% block page_content%}
{% endblock %}</body>
</html>

共有的页面

{% extends 'base.html' %}
{#首先继承母板#}
{# extends 一定要放在最上面#}
{% block page_content %}<table border="1px"><thead><tr><th>#</th><th>name</th><th>age</th></tr></thead><tbody><tr><td>1</td><td>jassin</td><td>21</td></tr><tr><td>2</td><td>lishi</td><td>21</td></tr><tr><td>3</td><td>dandan</td><td>35</td></tr></tbody></table>{% endblock %}

studen_list,学生表

{% extends "base.html"%}
{# 此处引用注意加引号#}

{% block page_content %}<ul type="none" style="padding: 100px"><li>迷</li><li>失</li><li>归</li><li>途</li><li>的</li><li>方</li><li>向</li></ul>
{% endblock %}

不知道什么表

# views。py
def student_list(request):return render(request, "student_list.html")def teacher_list(request):return render(request,"teacher_list.html")# urls。pyurl(r'^student_list/$',views.student_list),url(r'^teacher_list/$',views.teacher_list),

配置

块(block)

通过在母板中使用{% block  xxx %}来定义"块"。

在子页面中通过定义母板中的block名来对应替换母板中相应的内容。

{% block page_content %}<ul type="none"><li>迷</li><li>失</li><li>归</li><li>途</li><li>的</li><li>方</li><li>向</li></ul>
{% endblock %}

        把所有页面共用的部分 提取出来 放到母版里面母版里面通过定义 block ,通常模板里面为子页面单独定义{% block page_css %}{% endblock %}  --> 子页面才用到的CSS文件{% block page_js %}{% endblock %}   --> 子页面采用到的JS文件子页面继承 {% extends "base.html" %}  --》 一定要放在子页面的最上面{% block page_content %}我子页面才有的内容{% endblock %}

组件

可以将常用的页面内容如导航条,页尾信息等组件保存在单独的文件中,然后在需要使用的地方按如下语法导入即可。(导入组件)

{% include 'navbar.html' %}

静态文件相关(实现动态)

在setting.py 中
STATIC_URL = '/static/' 的static是可以改变# 所以我们也要把他实现为动态传.

首先需要先 {% load static %}  导入然后使用 例如
<img src="/static/images/hi.jpg" alt="Hi!">   # 这个已经写死<img src"{% static "images/hi.jpg" %}" alt="Hi!" /> 实现动态此处static 已经将static 导入,与 STATIC_URL = '/static/' 的static别名无关

引用JS文件时使用:

{% load static %}
<script src="{% static "mytest.js" %}"></script>

某个文件多处被用到可以存为一个变量

{% load static %}
{% static "images/hi.jpg" as myphoto %}
<img src="{{ myphoto }}"></img>

使用get_static_prefix(起别名)

{% load static %}
<img src="{% get_static_prefix %}images/hi.jpg" alt="Hi!" />

或者

{% load static %}
{% get_static_prefix as STATIC_PREFIX %}<img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />
<img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />

自定义simpletag(未讲)

和自定义filter类似,只不过接收更灵活的参数。

定义注册simple tag

@register.simple_tag(name="plus")
def plus(a, b, c):return "{} + {} + {}".format(a, b, c)

使用自定义simple tag

{% load app01_demo %}{# simple tag #}
{% plus "1" "2" "abc" %}

转载于:https://www.cnblogs.com/jassin-du/p/8318106.html

Django 之母板相关推荐

  1. django的母板系统

    一.母板渲染语法 1.变量 {{ 变量 }} 2.逻辑 {% 逻辑语 %} 二.变量 在母板中有变量时,母板引擎会去反向解析找到这个传来的变量,然后替换掉. .(点),在母板中是深度查询据点符,它的查 ...

  2. Django基本原理

    最近工作实在是无聊,正好我做模型有前端展示的需求,因此想自己做个界面出来,我想了一下,做客户端太麻烦了,还是做个网页吧,这样给别人用的时候也方便一些,所以开始进入Django的大坑. 在学习Djang ...

  3. Django学习心得

    Django是python的web开发框架,遵循MVC的设计模式,但在Django中通常称为MTV(model-template-views).model是数据持久层,主要存放实体映射.实体关系以及实 ...

  4. djaogo知识点 python_python Django知识点总结

    一.Django创建项目: 其他常用命令: 二.创建数据库(ORM) a.数据库表的增 1 这是原来的表 2 classUserINfo(models.Model): 3 nickname = mod ...

  5. 小试牛刀之Django

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  6. django 整理一

    url路由规则 django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理.其他大部分的Web框架则是对一 ...

  7. django模板过滤器

    django模板&过滤器 声明:部分信息来源这篇博客https://www.cnblogs.com/maple-shaw/articles/9333821.html MVC: 模型(model ...

  8. Django模板系统

    核心知识点: 1.变量{{ }} 逻辑{% %} 2.过滤filter{default length slice date safe trancatechars filesizeformat lowe ...

  9. Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件

    一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看到项 ...

最新文章

  1. 计算器,利用灰度图的顶帽扣出数字
  2. 第二章 序列比对——Needleman-Wunsch全局比对
  3. Spring 定时任务之 @Scheduled cron表达式
  4. linux系统的安装程序,Linux系统安装
  5. 研究生学位论文撰写注意事项--清华大学学位论文
  6. 10.TreeSet、比较器
  7. 意外把移动硬盘标记为活动分区怎么办?
  8. shame on u
  9. 微擎api.php,微擎支付api发起支付并验证
  10. 计算机与信息学院迎新标语,学院迎新标语横幅
  11. Springboot集合POI导出多sheet的Excel表格
  12. 基于matlab的微分例题,基于MATLAB的rlc电路模型仿真例题.doc
  13. 2022非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输~
  14. mysql数据库递归访问数据
  15. html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
  16. ubuntu meld打不开
  17. pytorch中num_workers详解
  18. 补题系列 1 最小布线
  19. 自定义字体文件解析成人眼可识别文字
  20. 面试中常见的数据结构

热门文章

  1. UNIX创建临时文件
  2. WPF 3D基础学习 - 画布、相机、Model3D(1)
  3. JavaScript语句模版
  4. 配置JDK时发生'javac'不是内部或外部命令的现象与解决过程
  5. ArcObjects中的几何对象简介(一)
  6. java io系列10之 FilterInputStream
  7. 现在的位置就是对的啊,意思就是当鼠标放上去的时候,停止滚动,鼠标离开,继续滚动(跑马灯项目功能)...
  8. JAVA 子父类的特点
  9. 替换某个目录下的文本文件内容字符串
  10. cefsharp 手机模式_微信“蓝光模式”保护眼睛