Django 之母板
---恢复内容开始---
母板
<!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 之母板相关推荐
- django的母板系统
一.母板渲染语法 1.变量 {{ 变量 }} 2.逻辑 {% 逻辑语 %} 二.变量 在母板中有变量时,母板引擎会去反向解析找到这个传来的变量,然后替换掉. .(点),在母板中是深度查询据点符,它的查 ...
- Django基本原理
最近工作实在是无聊,正好我做模型有前端展示的需求,因此想自己做个界面出来,我想了一下,做客户端太麻烦了,还是做个网页吧,这样给别人用的时候也方便一些,所以开始进入Django的大坑. 在学习Djang ...
- Django学习心得
Django是python的web开发框架,遵循MVC的设计模式,但在Django中通常称为MTV(model-template-views).model是数据持久层,主要存放实体映射.实体关系以及实 ...
- djaogo知识点 python_python Django知识点总结
一.Django创建项目: 其他常用命令: 二.创建数据库(ORM) a.数据库表的增 1 这是原来的表 2 classUserINfo(models.Model): 3 nickname = mod ...
- 小试牛刀之Django
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- django 整理一
url路由规则 django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理.其他大部分的Web框架则是对一 ...
- django模板过滤器
django模板&过滤器 声明:部分信息来源这篇博客https://www.cnblogs.com/maple-shaw/articles/9333821.html MVC: 模型(model ...
- Django模板系统
核心知识点: 1.变量{{ }} 逻辑{% %} 2.过滤filter{default length slice date safe trancatechars filesizeformat lowe ...
- Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建: 这样一个Django项目就创建完成了,上面可以看到项 ...
最新文章
- 计算器,利用灰度图的顶帽扣出数字
- 第二章 序列比对——Needleman-Wunsch全局比对
- Spring 定时任务之 @Scheduled cron表达式
- linux系统的安装程序,Linux系统安装
- 研究生学位论文撰写注意事项--清华大学学位论文
- 10.TreeSet、比较器
- 意外把移动硬盘标记为活动分区怎么办?
- shame on u
- 微擎api.php,微擎支付api发起支付并验证
- 计算机与信息学院迎新标语,学院迎新标语横幅
- Springboot集合POI导出多sheet的Excel表格
- 基于matlab的微分例题,基于MATLAB的rlc电路模型仿真例题.doc
- 2022非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输~
- mysql数据库递归访问数据
- html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
- ubuntu meld打不开
- pytorch中num_workers详解
- 补题系列 1 最小布线
- 自定义字体文件解析成人眼可识别文字
- 面试中常见的数据结构
热门文章
- UNIX创建临时文件
- WPF 3D基础学习 - 画布、相机、Model3D(1)
- JavaScript语句模版
- 配置JDK时发生'javac'不是内部或外部命令的现象与解决过程
- ArcObjects中的几何对象简介(一)
- java io系列10之 FilterInputStream
- 现在的位置就是对的啊,意思就是当鼠标放上去的时候,停止滚动,鼠标离开,继续滚动(跑马灯项目功能)...
- JAVA 子父类的特点
- 替换某个目录下的文本文件内容字符串
- cefsharp 手机模式_微信“蓝光模式”保护眼睛