Django 笔记 - 特殊操作符 2
前一篇博文介绍了 Django 中单独符号构成的常用特殊操作符,这篇博文接着介绍 Django 中组合符号构成的特殊操作符,即 {{ }} 和 {% %}。这两个组合符号构成的特殊操作符都用于 Django template,常用于 HTML 模板文件。下面分别介绍这两种特殊操作符:
{{ value }}
{{ value }} 可以在模板中显示 Python 代码传递变量 value 的值。使用 {{ value|filter }} 语法,用 filter 函数对 value 值进行处理后,然后才在 HTML 模板中展示最终的结果。
例如,{{ messges|length }} 在 HTTP template 中显示字符串或列表 messages 的长度;下面的例子中,message为一条消息信息实例,tags 是 message 属性,{{}} 除了可以单独使用,还可以在字符串中组合使用。
<div class="alert alert-{{message.tags}}">
{{message}}
</div>
{% tag argment %}
采用 {% tag argment %} 语法,可以在 HTML template 中,使用 tag 和参数 argument 展示块数据、逻辑判断、循环迭代列表等。常用的 tag 有 extends、content、if、for 和 url。更多 tag 内容参见 Built-in tag reference - Django Documentation。
具体实例,如下:
{% extends base.html %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-{{message}}">
{{message}}
</div>
{% endfor %}
{% endif %}
{% block content %}
<a href="{% url 'home' %}">Todo</a>
{% endblock content %}
其中,extends tag 用于扩展 base.html,与类的继承机制类似;if tag 用于逻辑判断;for tag 用于循环迭代;url tag 用于获得视图名为 'home' 的 URL 地址;
补充 1(更新于2024年7月5日)
{# single-line comments #}
在 Django template 中,采用 {# single-line comments #} 语法,可以注释单独一行内容,注释掉的内容既可以是一行普通的字符串,也可以是任意一行 template 代码。更多内容参见 Comments - The Django template language 。
具体实例,如下:
{# Hello World #}
{# {% if message %} {{message}} {% else %} #}
注意,这种语法只能用于单行内容的注释,即 {# 和 #} 分隔符之间不允许有 newlines。若希望注释多行 template 内容,参见 comment tag - Django documentation。
Django template tags 汇总表
template tag | meaning |
{% | open block |
%} | close block |
{{ | open variable |
}} | close variable |
{ | open brace |
} | close brace |
{# | open comment |
#} | close comment |
参考资料
[1] Built-in template tags and filters. https://docs.djangoproject.com/en/5.0/ref/templates/builtins/
[2] Django Todo App. https://www.pythontutorial.net/django-tutorial/django-todo-app/