【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()时间 场景描述:
随机推荐
- Go 面试每天一篇(第 2 天)
下面这段代码输出什么,说明原因. func main() { slice := []int{0,1,2,3} m := make(map[int]*int) for key,val := range ...
- Java NIO系列之[说在前面的话]
在开始这个系列文章之前,先聊一些题外话,说说我为什么要写Java NIO这个系列技术文章(不看完会错失一个亿的),因为Java NIO并不像JVM,中间件源码那么有吸引力,但这个技术点是java的基础 ...
- 消费者、生产者Java代码示例,wait
箱子中的苹果代表资源,现在有消费者从箱子中拿走苹果,生产者往箱子中放苹果.代码如下: 资源--箱子中的苹果: public class Box { int size; int num; public ...
- EF的3种开发模式
那么明显开发模式是三种. 即:DateBase First(数据库优先).Model First(模型优先)和Code First(代码优先). 当然,如果把Code First模式的两种具体方式独立 ...
- CF995B Suit and Tie 贪心 第十三
Suit and Tie time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 入门MySQL——备份与恢复
前言: 前面几篇文章为大家介绍了 MySQL 各种语句语法的用法及用户权限相关知识.本篇文章将主要讲解 MySQL 数据库数据备份与恢复相关知识,主要聚焦于逻辑备份,介绍mysqldump工具的使用 ...
- SQL数据同步到ELK(二)- Elastic Search 安装
开篇废话 没错,前面扯了一堆SQL SERVER,其实我连Elastic Search根本没动手玩过(是不是与时代有点脱节了?),那今天我就准备尝试安装一个ELK的简单集群出来(这个集群是使用我的小米 ...
- Node基础-CommonJS模块化规范
1.在本地项目中基于NPM/YARN安装第三方模块 第一步:在本地项目中创建一个"package.json"的文件 作用:把当前项目所有依赖的第三方模块信息(包含:模块名称以及版本 ...
- spark与mapreduce的区别
spark是通过借鉴Hadoop mapreduce发展而来,继承了其分布式并行计算的优点,并改进了mapreduce明显的缺陷,具体表现在以下几方面: 1.spark把中间计算结果存放在内存中,减少 ...
- watch命令的监控结果输出到文件
watch命令是为命令行输出设计的工具,其结果包含很多不可打印的字符,所以输出重定向到文件中很不方便,比如这样做的话有很多乱码: (watch -n 60 <mycommand> ) &g ...