原文档:
https://docs.djangoproject.com/en/1.8/topics/templates/#the-django-template-language
总结如下:
Django模板语言 The Django template language
模板中常用的语法规则
{最新版本的Django语法可能有改变,不支持的操作可能支持了。[HTML教程 - 基本元素/标签及属性]}
Django变量Variables
A variable outputs a value from the context, which is a dict-like objectmapping keys to values.
Variables are surrounded by { { and}} like this:
My first name is {
{
first_name }}. My last name is {
{
last_name }}.
Django 模板标签
if/else 标签
1. 基本语法格式如下:
{% if condition %} ... display {% endif %}
或者:
{% if condition1 %} ... display 1 {% elif condiiton2 %} ... display 2 {% else %} ... display 3 {% endif %}
根据条件判断是否输出。if/else 支持嵌套。
Note:模板标签中的变量是不用{
{}}包含的。
2. {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:
{% if athlete_list and coach_list %} athletes 和 coaches 变量都是可用的。 {% endif %}
Note:
1. {% if %} 标签不允许在同一个标签中同时使用 and 和 or ,因为逻辑上可能模糊的,这样的代码是不合法的:
{% if athlete_list and coach_list or cheerleader_list %}2. 系统不支持用圆括号来组合比较操作。 如果你确实需要用到圆括号来组合表达你的逻辑式,考虑将它移到模板之外处理,然后以模板变量的形式传入结果吧。 或者,仅仅用嵌套的 {%if%}标签替换
for 标签
1. {% for %} 允许我们在一个序列上迭代。与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。
每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。
例如,给定一个运动员列表 athlete_list 变量,我们可以使用下面的代码来显示这个列表:<ul> {% for athlete in athlete_list %} <li>{ { athlete.name }}</li> {% endfor %} </ul>
2. 给标签增加一个 reversed 使得该列表被反向迭代:
{% for athlete in athlete_list reversed %}
3. 可以嵌套使用 {% for %} 标签。
在执行循环之前先检测列表的大小是一个通常的做法,当列表为空时输出一些特别的提示。`` for`` 标签支持一个可选的`` {% empty %}`` 分句,通过它我们可以定义当列表为空时的输出内容 下面的例子与用if-else实现等价:
{% for athlete in athlete_list %} <p>{ { athlete.name }}</p> {% empty %} <p>There are no athletes. Only computer programmers.</p> {% endfor %}
4. Django不支持退出循环操作。 如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目。 同理,Django也不支持continue语句ÿ