模板二(标签)

2、标签(tag)的使用
使用大括号和百分比的组合来表示使用标签。
语法:{% tag %}

#常用标签
{% if %}内容{% endif %} 计算一个变量值,如果是True,则会显示之间的内容
说明:{% if %}标签可以和and、or或者not联合使用,但是在同一标签里面不能同时出现and和or

{% for %}内容{% endfor %} 允许按顺序遍历一个序列中的各个元素,每次循环模板系统都会渲染之间的内容
# 在标签里添加reversed来反序循环列表:
{ % for obj in list reversed %}
...
{ % endfor %}

{% url %} 引用路由配置的地址

{% with %}内容{% endwith %} 用更简单的变量名替代复杂的变量名

{% verbatim %}内容{% endverbatim %} 禁止render

{% load %}内容{% endload %} 某些应用提供自定义标签和过滤器库. 要在一个模板中访问它们, 使用 {% load %} 标签:

#实例
1.if标签的使用
{% if num >= 90 and num <= 100 %}
<p>优秀</p>
{% elif num >= 80 %}
<p>良好</p>
{% elif num >= 70 %}
<p>一般</p>
{% elif num >= 60 %}
<p>合格</p>
{% else %}
<p>不合格</p>
{% endif %}

2.for标签的使用

forloop.counter,从1开始计数
{% for l_1 in li %}
<h1>{{ forloop.counter }}-{{ l_1 }}</h1>
{% endfor %}

forloop.counter0,从0开始计数
{% for l_2 in li %}
<h1>{{ forloop.counter0 }}-{{ l }}</h1>
{% endfor %}

forloop.revcounter,逆序从1开始计数
{% for 1_3 in li %}
<h2>{{ forloop.revcounter }}:{{ l }}</h2>
{% endfor %}

forloop.revcounter0,逆序从0开始计数
{% for l_4 in li %}
<h2>{{ forloop.revcounter0 }}:{{ l }}</h2>
{% endfor %}

{% for i in li %}
<li>{{ forloop.counter0 }}----{{ i }}</li>
empty,如果循环的东西是空的,则执行empty下面的
{% empty %}
<li>this is empty!</li>
{% endfor %}

3.url和csrf_token标签的使用
<form action="{% url 'login' %}" method="poast">
<p>姓名<input type="text" name="user"></p>
<p>密码<input type="text" name="pwd"></p>
<p><input type="submit"></p>
用于防止跨站攻击验证
{% csrf_token %}
</form>

4.with标签的使用
{% with total=dfdfsfsdfdf %}
{{ total }}
{% endwith %}

5.verbatim标签:此处的结果就是{{ 禁止render }}
{% verbatim %}
{{ 禁止render }}
{% endverbatim %}


3、自定义标签

filter:传一个参数
1.在APP中创建templatetags模板(即建立一个名为templatetags的文件夹)
2.在模板里面创建任意.py文件;如:my_tag.py
文件中内容固定部分
from django import template
from django.utils.safestring import mark_safe
register = template.Library() # register是固定的,不能变
# 自定义部分
@register.filter
def filter_multi(x, y):
return x * y
@register.simple_tag
def add(x,y):
return x+y
3.在使用自定义simple_tag和filter的HTML文件中导入之前创建的.py文件, 如:my_tag.py。导入方式为
{ % load my_tag.py %}
4.使用simple_tag和filter
.html文件内容
{ % load
xxx %} # 首行
# num=12
{{num | filter_multi: 2}} # 24
{{num | filter_multi: "[22,333,4444]"}}
{ % simple_tag_multi 2 5 %} 参数不限, 但不能放在if和for语句中
{ % simple_tag_multi num 5 %}
5.在setting中的INSTALLED_APPS配置当前APP
posted @ 2021-07-15 16:10  ShadowFolk  阅读(29)  评论(0编辑  收藏  举报