请问模板层在网页设计中有哪些具体应用场景?
- 内容介绍
- 文章标签
- 相关推荐
本文共计927个文字,预计阅读时间需要4分钟。
过滤器 + 语法结构 + { { 数据对象|过滤器名称:参数 }} + 过滤器最多只能额外传输一个参数 + 常见过滤器 + 标签 + 注意事项 + 在Django模板语法中写标签时,只需要写关键字然后按tab键就会自动补全{{
过滤器 语法结构{{ 数据对象|过滤器名称:参数 }}
过滤器最多只能额外传输一个参数
常见过滤器 标签 注意事项在django模板语法中写标签的时候,只需要写关键字然后tab键就会自动补全
语法结构{% 名字 ...%}
{% end名字 %}
if判断{% if 条件1 %}
<p>你好啊</p>
{% elif 条件2 %}
<p>他好呀</p>
{% else %}
<p>大家好</p>
{% endif %}
提供了forloop关键字
{% for i in l1 %}
<p>{{ i }}</p>
{% endfor %}
{% for i in l1 %}
{% if forloop.first %}
<p>这是第一次循环</p>
{% elif forloop.last %}
<p>这是最后一次循环</p>
{% else %}
<p>中间循环</p>
{% endif %}
{% empty %}
<p>for循环对象为空 自动执行</p>
{% endfor %}
- 在应用下需要创建一个名为templatetags的文件夹
- 在该文件夹内创建一个任意名称的py文件
- 在该py文件内需要先提前编写两行固定的代码
from django import template register = template.Library()
只能接收两个参数
@register.filter(is_safe=True) def index(a, b): return a + b {% load mytag %} {{ n1|index:666 }} View Code 自定义简单标签
可以接收任意的参数
@register.simple_tag(name='my_tag') def func1(a, b, c, d): return a + b + c + d {% my_tag 1 2 3 4 %} # 参数之间空格隔开即可 自定义inclusion_tag
@register.inclusion_tag('left.html') def func2(n): l1 = [] for i in range(1, n + 1): l1.append(f'第{i}页') return locals() {% func2 10 %} # 传入的参数是几就会打印几页
<ul> {% for foo in l1 %} <li>{{ foo }}</li> {% endfor %} </ul>
该方法需要先作用于一个局部html页面,之后将渲染的结果放到调用的位置
模板导入 概念类似于将html页面上的局部页面做成模块的形式,哪个地方想要直接导入即可展示
有一个非常好看的获取用户数据的页面,需要在网站的多个页面上使用
- 策略1:拷贝多份即可
- 策略2:模板的导入
{% include 'menu.html' %}
menu.html只能是一个局部页面,只能写局部代码
注释语法 HTML的注释语法<!---->
django模板语法的注释{# #}
注意事项HTML的注释可以在前端浏览器页面上直接查看到,模板语法的注释只能在后端查看,前端浏览器查看不了
模板继承 概念类似于面向对象的继承:继承了某个页面就可以使用该页面上所有的资源
有很多网站的很多页面,其实都是差不多的,只是局部有所变化,模板的继承可以很好的实现该需求
继承步骤- 先在模板中通过block划定将来可以被修改的区域
{% block content %} <h1>主页内容</h1> {% endblock %}
- 子板继承模板
{% extends 'home.html' %}
- 修改划定的区域
{% block content %} <h1>登录内容</h1> {% endblock %}
- 子页面还可以重复使用父页面的内容
{{ block.super }}
模板上最少应该有三个区域:css区域、内容区域、js区域,子页面就可以有自己独立的css、js、内容
本文共计927个文字,预计阅读时间需要4分钟。
过滤器 + 语法结构 + { { 数据对象|过滤器名称:参数 }} + 过滤器最多只能额外传输一个参数 + 常见过滤器 + 标签 + 注意事项 + 在Django模板语法中写标签时,只需要写关键字然后按tab键就会自动补全{{
过滤器 语法结构{{ 数据对象|过滤器名称:参数 }}
过滤器最多只能额外传输一个参数
常见过滤器 标签 注意事项在django模板语法中写标签的时候,只需要写关键字然后tab键就会自动补全
语法结构{% 名字 ...%}
{% end名字 %}
if判断{% if 条件1 %}
<p>你好啊</p>
{% elif 条件2 %}
<p>他好呀</p>
{% else %}
<p>大家好</p>
{% endif %}
提供了forloop关键字
{% for i in l1 %}
<p>{{ i }}</p>
{% endfor %}
{% for i in l1 %}
{% if forloop.first %}
<p>这是第一次循环</p>
{% elif forloop.last %}
<p>这是最后一次循环</p>
{% else %}
<p>中间循环</p>
{% endif %}
{% empty %}
<p>for循环对象为空 自动执行</p>
{% endfor %}
- 在应用下需要创建一个名为templatetags的文件夹
- 在该文件夹内创建一个任意名称的py文件
- 在该py文件内需要先提前编写两行固定的代码
from django import template register = template.Library()
只能接收两个参数
@register.filter(is_safe=True) def index(a, b): return a + b {% load mytag %} {{ n1|index:666 }} View Code 自定义简单标签
可以接收任意的参数
@register.simple_tag(name='my_tag') def func1(a, b, c, d): return a + b + c + d {% my_tag 1 2 3 4 %} # 参数之间空格隔开即可 自定义inclusion_tag
@register.inclusion_tag('left.html') def func2(n): l1 = [] for i in range(1, n + 1): l1.append(f'第{i}页') return locals() {% func2 10 %} # 传入的参数是几就会打印几页
<ul> {% for foo in l1 %} <li>{{ foo }}</li> {% endfor %} </ul>
该方法需要先作用于一个局部html页面,之后将渲染的结果放到调用的位置
模板导入 概念类似于将html页面上的局部页面做成模块的形式,哪个地方想要直接导入即可展示
有一个非常好看的获取用户数据的页面,需要在网站的多个页面上使用
- 策略1:拷贝多份即可
- 策略2:模板的导入
{% include 'menu.html' %}
menu.html只能是一个局部页面,只能写局部代码
注释语法 HTML的注释语法<!---->
django模板语法的注释{# #}
注意事项HTML的注释可以在前端浏览器页面上直接查看到,模板语法的注释只能在后端查看,前端浏览器查看不了
模板继承 概念类似于面向对象的继承:继承了某个页面就可以使用该页面上所有的资源
有很多网站的很多页面,其实都是差不多的,只是局部有所变化,模板的继承可以很好的实现该需求
继承步骤- 先在模板中通过block划定将来可以被修改的区域
{% block content %} <h1>主页内容</h1> {% endblock %}
- 子板继承模板
{% extends 'home.html' %}
- 修改划定的区域
{% block content %} <h1>登录内容</h1> {% endblock %}
- 子页面还可以重复使用父页面的内容
{{ block.super }}
模板上最少应该有三个区域:css区域、内容区域、js区域,子页面就可以有自己独立的css、js、内容

