推荐答案
在 Django 模板中,标签(Tags)用于执行一些逻辑操作,比如控制流程、加载模板、继承模板等。Django 模板标签的语法是 {% tag %}
,其中 tag
是标签的名称。以下是一些常用的 Django 模板标签及其用法:
控制流程标签:
{% if %}
:用于条件判断。{% for %}
:用于循环遍历。{% ifchanged %}
:用于检查变量是否发生变化。{% with %}
:用于为变量赋值。
模板继承标签:
{% extends %}
:用于继承另一个模板。{% block %}
:用于定义可被子模板覆盖的块。{% include %}
:用于包含其他模板。
其他常用标签:
{% url %}
:用于生成 URL。{% load %}
:用于加载自定义模板标签库。{% csrf_token %}
:用于生成 CSRF 令牌。
示例代码
-- -------------------- ---- ------- -- ------- ----------- -- -- ----- ------- -- ----------- -- -- --------- -- -- --------------------- -- --------- -- ------------- ------- -- ---- -- --------- -- -------- --- ------- ------------------ -- ----- -- ---- -- --- ---- -- ----- -- ------ --------- ------- -- ------ -- ----- -- -------- --
本题详细解读
1. 控制流程标签
{% if %}
:用于条件判断。可以根据条件决定是否显示某部分内容。例如:{% if user.is_authenticated %} <p>Welcome back, {{ user.username }}!</p> {% else %} <p>Please log in.</p> {% endif %}
{% for %}
:用于循环遍历一个列表或查询集。例如:<ul> {% for item in items %} <li>{{ item.name }}</li> {% endfor %} </ul>
{% ifchanged %}
:用于检查变量是否发生变化。通常用于在循环中检测变量的变化。例如:{% for item in items %} {% ifchanged item.category %} <h3>{{ item.category }}</h3> {% endifchanged %} <p>{{ item.name }}</p> {% endfor %}
{% with %}
:用于为变量赋值,通常用于简化模板中的复杂表达式。例如:{% with total=items|length %} <p>Total items: {{ total }}</p> {% endwith %}
2. 模板继承标签
{% extends %}
:用于继承另一个模板。通常用于定义基础模板,子模板可以继承并覆盖基础模板中的块。例如:{% extends "base.html" %}
{% block %}
:用于定义可被子模板覆盖的块。例如:{% block content %} <p>This is the default content.</p> {% endblock %}
{% include %}
:用于包含其他模板。例如:{% include "header.html" %}
3. 其他常用标签
{% url %}
:用于生成 URL。例如:<a href="{% url 'login' %}">Login</a>
{% load %}
:用于加载自定义模板标签库。例如:{% load custom_tags %}
{% csrf_token %}
:用于生成 CSRF 令牌,通常用于表单中以防止跨站请求伪造攻击。例如:<form method="post"> {% csrf_token %} <input type="submit" value="Submit"> </form>
通过合理使用这些标签,可以有效地控制 Django 模板的渲染逻辑,使模板更加灵活和可维护。