继承

① 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】模版的更多相关文章

  1. 创建ABPboilerplate模版项目

    本文是根据角落的白板报的<通过ABPboilerplate模版创建项目>一文的学习总结,感谢原文作者角落的白板报. 1 准备 开发环境: Visual Studio 2015 update ...

  2. 使用boilerplate模版创建解决方案

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 话不多说,让我们开始干吧!对于还没有接触ABP框架或者接触时间还不是很长的小伙伴来说,我建议还是使用官方建议的做法,那就是到ABP ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版

    系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...

  4. 构建自己的PHP框架--构建模版引擎(1)

    前段时间太忙,导致好久都没有更新博客了,今天抽出点时间来写一篇. 其实这个系列的博客很久没有更新了,之前想好好规划一下,再继续写,然后就放下了,今天再捡起来继续更新. 今天我们来说一下,如何构建自己的 ...

  5. asp.net读取模版并写入文本文件

    本文要介绍的是ASP.NET怎样读写文本文件,但更重要的是实现的过程.使用的工具是Visual Studio 2015 ,.NET版本是4.6.1 .一共建立的2个项目,HoverTreePanel和 ...

  6. [bzoj1269][AHOI2006文本编辑器editor] (splay模版题 or pb_ds [rope]大法)

    Description 这些日子,可可不和卡卡一起玩了,原来可可正废寝忘食的想做一个简单而高效的文本编辑器.你能帮助他吗?为了明确任务目标,可可对“文本编辑器”做了一个抽象的定义:   文本:由0个或 ...

  7. C++ 模版

    函数模版 #include <iostream> using namespace std; template<typename T> T add(T t1, T t2) { r ...

  8. Python 【第十一章】 Django模版

    1.直接传值 urls.py """mysite URL Configuration The `urlpatterns` list routes URLs to view ...

  9. Django模版语言 格式化显示 后台datatime()时间

    Django模版语言 格式化显示 后台datatime()时间 场景描述:

随机推荐

  1. python 30 基于TCP协议的socket通信

    目录 1. 单对单循环通信 2. 循环连接通信:可连接多个客户端 3. 执行远程命令 4. 粘包现象 4.1 socket缓冲区 4.2 出现粘包的情况: 4.3 解决粘包现象 bytes 1. 单对 ...

  2. FFmpeg命令行map参数选择音视频流

    FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...

  3. 人员考勤,MySQLl数据库一个表自动生成3表筛选人员迟到早退缺勤

    前言:漂亮的人事小姐姐找我帮忙弄考勤:由于人员考勤和门禁一起,打卡记录太多,打卡机只能导出一个打卡Excel总表,不容易人工筛选. Excel表的格式是这样的:(这里101代替真实人名) 实现目标: ...

  4. HDU 6299

    题意略. 思路: 我们先把所有字符串处理成 ")))((((" 这样的形式.然后我们把这些字符串排个序,按照min(l,r)来排,小的在前,在我的代码中,l为 ( 的个数,r 为 ...

  5. Codeforces 985D

    题意略. 思路:这个题本来打算先推一下公式,然后解方程来算.函数图像大概如下: 最左端为H.但是由于中间那个尖的地方(假设它的高度为h),可能在那个地方有多堆沙包,所以推公式貌似不行. 但是最高高度h ...

  6. Codeforces 975C

    题意略. 思路:这题考察的是二分搜索. #include<bits/stdc++.h> #define maxn 200005 using namespace std; typedef l ...

  7. Leetcode之回溯法专题-46. 全排列(Permutations)

    Leetcode之回溯法专题-46. 全排列(Permutations) 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3, ...

  8. 转载-Springboot整合ehcache缓存

    转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...

  9. hdu2222 Keywords Search (AC自动机板子

    https://vjudge.net/problem/HDU-2222 题意:给几个模式串和一个文本串,问文本串中包含几个模式串. 思路:贴个板子不解释. #include<cstdio> ...

  10. 最短路算法 Dijkstra 入门

    dijkstra算法 是一种单源点最短路算法求出一个点到其他所有点的最短路. 给你这样的一个图,需要求出1号点到其他点的最短距离是多少. 首先我们开一个数组 d[N],d[x] 代表着从起点出发到x点 ...