继承

① 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. VScode 插件推荐与C/C++配置

    以下是我经常用到的VScode插件.由于插件本身具有详细的配置和介绍,不对插件本身的安装配置进行说明,仅仅支出这些插件的主要功能.具体使用强烈推荐看一下安装插件后的说明,大多数的问题和设置都可以找到, ...

  2. Python数据分析之pandas基本数据结构:Series、DataFrame

    1引言 本文总结Pandas中两种常用的数据类型: (1)Series是一种一维的带标签数组对象. (2)DataFrame,二维,Series容器 2 Series数组 2.1 Series数组构成 ...

  3. CodeForces 909C

    题意略. 思路: 开始的时候,定义dp[i]:当前行在第i行,i~n有多少种排列方式,如果i为f,那么dp[i] = dp[i + 1],因为第i + 1条语句只能放在f后且向右缩进一位: 如果i为s ...

  4. Agentless监控实践中的预警指标采集

    很多公司已经开发了监控解决方案,解决了指标收集.展示.预警发送等一系列问题. 本文介绍的监控解决方案由高性能时序数据库InfluxDB.时序分析监控工具Grafana及Agentless自动化工具An ...

  5. E-Explorer_2019牛客暑期多校训练营(第八场)

    题意 n个点,m条边,u,v,l,r表示点u到点v有一条边,且只有编号为\([l,r]\)的人能通过,问从点1到点n有哪些编号的人能通过 题解 先对\(l,r\)离散化,用第七场找中位数那题同样的形式 ...

  6. codeforces 245 D. Restoring Table(位运算+思维)

    题目链接:http://codeforces.com/contest/245/problem/D 题意:给出一个矩阵b,b[i][j]=a[i]&a[j],b[i][i]=-1.然后求a[i] ...

  7. poj 2253 Frogger(floyd变形)

    题目链接:http://poj.org/problem?id=1797 题意:给出两只青蛙的坐标A.B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的.显然从A到B存在至少一条的通路,每一条通路 ...

  8. 2015 省赛 简单的图论问题? bfs

    [E] 简单的图论问题? 时间限制: 5000 ms 内存限制: 65535 K 问题描述 给一个 n 行 m 列的迷宫,每个格子要么是障碍物要么是空地.每个空地里都有一个权值.你的 任务是从找一条( ...

  9. C++多例模式下对Instance的使用

    最近工作中遇到这样一个问题: 之前N年,公司用的都是一块CPU对应一块物理板,也就是,一块物理板只要一个实例化就可以了----俗称单例模式. 现在突然要一块CPU对应多块物理板,妥妥的多例模式啊.但是 ...

  10. Day003_linux基础_系统启动过程及系统安装后优化

    Linux系统启动过程: 打开电源开关开机 BIOS自检 MBR引导 grub内核菜单选择 加载内核kernel 运行init进程,系统初始化 然后读取/etc/inittab 配置文件,当前系统所在 ...