常用的Django模板语言
Django模板语言(Django Template Language, DTL)是Django框架中用于呈现HTML的方式。它具有一套丰富的标签和过滤器,帮助你在模板中动态渲染内容。常用的模板标签和过滤器有很多,以下是一些常见的:
常用模板标签:
-
变量输出:
{{ variable }}
用于输出变量的值。如果变量不存在,则不会显示内容。
-
控制结构标签:
-
条件语句(
if
、elif
、else
):{% if user.is_authenticated %} <p>Welcome, {{ user.username }}!</p> {% else %} <p>Please log in.</p> {% endif %}
-
循环语句(
for
):{% for item in item_list %} <p>{{ item.name }}</p> {% empty %} <p>No items available.</p> {% endfor %}
-
forloop(循环的特殊变量):
{% for item in item_list %} {{ forloop.counter }}. {{ item.name }} {% endfor %}
-
-
模板继承:
-
extends:用来继承父模板。
{% extends "base.html" %}
-
block:在父模板中定义可修改的内容区域。
{% block content %} <p>This is content.</p> {% endblock %}
-
-
include:
{% include 'header.html' %}
用于包含其他模板文件。
-
URL反向解析:
<a href="{% url 'app_name:view_name' %}">Link</a>
用于根据URL模式名称生成URL。
常用模板过滤器:
过滤器用于修改模板变量的显示方式。
-
default:
{{ user.name|default:"Anonymous" }}
如果
user.name
为空,则显示Anonymous
。 -
length:
{{ items|length }}
返回列表或字符串的长度。
-
date:
{{ article.published_at|date:"Y-m-d" }}
格式化日期时间。
-
lower/upper:
{{ user.username|lower }}
将字符串转换为小写(
upper
为大写)。 -
safe:
{{ raw_html|safe }}
用于标记HTML代码为安全,避免被自动转义。
-
join:
{{ my_list|join:", " }}
用指定的分隔符将列表连接成字符串。
-
truncatechars:
{{ description|truncatechars:100 }}
将字符串截断为指定长度(例如100个字符)。
-
escape:
{{ user_input|escape }}
将特殊字符(如
<
、>
等)转义为HTML实体。
常用的其它标签:
-
comment:用于注释,不会在输出中显示。
{% comment %} This is a comment {% endcomment %}
-
blocktrans:用于国际化翻译。
{% blocktrans %} Welcome, {{ username }}! {% endblocktrans %}
这些标签和过滤器是Django模板语言的基础,可以帮助你灵活地渲染数据和构建动态网页。