【Dgango】模版
继承
① extends用法:只继承一个模版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="/static/commons.css" />
<style>
.pg-header{
height: 50px;
background-color: seashell;
color: green;
}
</style>
{% block css %}{% endblock %}
</head>
<body>
<div class="pg-header">小男孩管理</div> {% block content %}{% endblock %}
<div class="pg-footer"></div>
<script src="/static/jquery.js"></script>
{% block js %}{% endblock %}
</body>
</html>
templates/master.html #母模版
{% extends 'master.html' %} <!--继承模版-->
{% block title %}DIY网站{% endblock %} <!--继承模版里面的块-->
{% block content %}
<h1>用户管理</h1>
<ul>
{% for i in u %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{% endblock %}
{% block css %}
<style>
body{
background-color: red;
}
</style>
{% endblock %}
templates/tpl1.html #子版
def tpl1(request):
user_list = [1,2,3,4]
return render(request,'tpl1.html',{'u':user_list})
app01/xiews.py

②include用法 :(可以多个重复操作)
<form>
<input type="text"/>
<input type="submit"/>
</form>
templates/tag.html #母模版
{% extends 'master.html' %} <!--继承模版-->
{% block title %}DIY网站{% endblock %} <!--继承模版里面的块-->
{% block content %}
<h1>用户管理</h1>
<ul>
{% for i in u %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{% include 'tag.html'%} <!--导入单独组件-->
{% include 'tag.html'%}
{% for i in u %} <!--循环4次-->
{% include 'tag.html'%}
{% endfor %}
{% endblock %}
{% block css %}
<style>
body{
background-color: red;
}
</style>
{% endblock %}
templates/tpl1.html #子板

③自定义simple_tag,filter
a、在app中创建templatetags文件夹
b、创建任意 .py 文件,如:daly.py
from django import template register = template.Library() @register.simple_tag
# 可以传入多个参数
def hanshu(a1,a2):
return a1 * a2 # filter方法:
# @register.filter
# def func(a1,a2)
app01/temlatetags/daly.py
c、在使用自定义simple_tag的tpl2.html文件中导入之前创建的 daly.py 文件名
{% load daly %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name}}
{{ name|lower}}
{% hanshu 2 6 %} <!--对应daly.py中的hanshu-->
</body>
</html>
templates/tpl2.html
# 自定义simple_tag与filter优缺点:
simple_tag 中:
{% 函数名 a1 a2 a3... %}
缺点:不能作为if条件
优点:参数任意
filter 中:
{{ a1|函数名:"a2,a3" }} {{a1|函数名:数字 }}
缺点:最多两个参数,不能加空格:
优点:能作为if条件
d、在settings中配置当前app,不然django无法找到自定义的simple_tag
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
]
project/settings.py
e、views.py代码
def tpl2(request):
name = 'abcABC'
return render(request,'tpl2.html',{'name': name })
app01/views.py

# 还有个inclusion_tag方法 # view视图:
from django.template import Library
register = Library()
@register.inclusion_tag('menu.html')
def menu(request):
# 从数据库中获取数据,menu_result接收并返回
...
return {'menu_result':menu_result} # menu.html:
{% load 视图文件 %}
<body>
<div class="pg-header">
头部菜单
</div>
<div class="pg-content">
<div class="menu">
<!--相当于执行def menu函数并拿到menu_resul返回值-->
{% menu request %}
...
</div>
<div class="content">
{% block content %}{% endblock %}
</div>
</div>
{% block js %} {% endblock %}
</body>
</html>
【Dgango】模版的更多相关文章
- 创建ABPboilerplate模版项目
本文是根据角落的白板报的<通过ABPboilerplate模版创建项目>一文的学习总结,感谢原文作者角落的白板报. 1 准备 开发环境: Visual Studio 2015 update ...
- 使用boilerplate模版创建解决方案
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 话不多说,让我们开始干吧!对于还没有接触ABP框架或者接触时间还不是很长的小伙伴来说,我建议还是使用官方建议的做法,那就是到ABP ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版
系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...
- 构建自己的PHP框架--构建模版引擎(1)
前段时间太忙,导致好久都没有更新博客了,今天抽出点时间来写一篇. 其实这个系列的博客很久没有更新了,之前想好好规划一下,再继续写,然后就放下了,今天再捡起来继续更新. 今天我们来说一下,如何构建自己的 ...
- asp.net读取模版并写入文本文件
本文要介绍的是ASP.NET怎样读写文本文件,但更重要的是实现的过程.使用的工具是Visual Studio 2015 ,.NET版本是4.6.1 .一共建立的2个项目,HoverTreePanel和 ...
- [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)
Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义: 文本:由0个或 ...
- C++ 模版
函数模版 #include <iostream> using namespace std; template<typename T> T add(T t1, T t2) { r ...
- Python 【第十一章】 Django模版
1.直接传值 urls.py """mysite URL Configuration The `urlpatterns` list routes URLs to view ...
- Django模版语言 格式化显示 后台datatime()时间
Django模版语言 格式化显示 后台datatime()时间 场景描述:
随机推荐
- CSS文本超出用省略号代替的方法
{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
- LeetCode115不同的子序列
题目说明在这里就不贴出来了,相信打开这篇文章的小伙伴们肯定都是在刷LeetCode的. 一开始我的想法是dfs+回溯,结果运行超时,一开始我就觉得可能会超时,结果不出所料[手动笑哭]. 后来我想了下d ...
- spring加载bean流程解析
spring作为目前我们开发的基础框架,每天的开发工作基本和他形影不离,作为管理bean的最经典.优秀的框架,它的复杂程度往往令人望而却步.不过作为朝夕相处的框架,我们必须得明白一个问题就是sprin ...
- Zookeeper之Leader选举过程
Leader在集群中是一个非常重要的角色,负责了整个事务的处理和调度,保证分布式数据一致性的关键所在.既然Leader在ZooKeeper集群中这么重要所以一定要保证集群在任何时候都有且仅有一个Lea ...
- 共价大爷游长沙 lct 维护子树信息
这个题目的关键就是判断 大爷所有可能会走的路 会不会经过询问的边. 某一条路径经过其中的一条边, 那么2个端点是在这条边的2测的. 现在我们要判断所有的路径是不是都经过 u -> v 我们以u为 ...
- JOBDU 1109 连通图
题目1109:连通图 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4192 解决:2224 题目描述: 给定一个无向图和其中的所有边,判断这个图是否所有顶点都是连通的. 输入: 每组数据 ...
- hdu6354 杭电第五场 Everything Has Changed 计算几何
Everything Has Changed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java ...
- java1.8新特性(一)接口的默认方法
一 简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现. 在JDK1.8中打破了这样的认识,接口中的方法可以有 ...
- 《Fluent Python》---一个关于memoryview例子的理解过程
近日,在阅读<Fluent Python>的第2.9.2节时,有一个关于内存视图的例子,当时看的一知半解,后来查了一些资料,现在总结一下,以备后续查询: 示例复述 添加了一些额外的代码,便 ...
- Go语言标准库之strconv
Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数: Atoi().Itia().pa ...