Django之模板语言(四) ------>Tags

 

 

案例1:单层for循环

# Django 模板语言测试代码
def template_test(request):
    name_list=["张三","李四","王五"]
    return render(
        request,
        't_test.html',
        {
            "name_list":name_list,
        }
    )
<p>for循环</p>
<ul>
    {% for name in name_list %}
        <li>{{ forloop.counter }}---{{ name }}</li>
        {# counter0表示从显示下标从0开始#}
    {% endfor %}
</ul>
<ul>
    {% for name in name_list %}
        {% if forloop.last %}
            <li class="样式1">{{ forloop.revcounter0 }}</li>
        {% else %}
            <li class="样式2{% if forloop.first %}我是写在标签中的if-else{% endif %}"> {{ forloop.revcounter }}---{{ name }}</li>
        {% endif %}
    {% endfor %}
</ul>

 

 

案例2:双层for循环

<p>双层循环</p>
{% for name in name_list2 %}
    {% for name1 in name %}
        {{ forloop.counter }}
        {{ forloop.parentloop.last }}
        {{ name1 }}
    {% endfor %}
{% endfor %}

注:forloop.parentloop 表示双层循环的外层

 

案例:for-empty循环

<p>for-empty循环</p>
{% for name in name_list1 %}
    {{ name }}
{% empty %}
    <p>name_list1中暂时没有数据哦</p>
{% endfor %}

注:如果in 后面的变量中没有数据,则执行empty中语句。

 

案例:if-else分支语句

<p>if-elif else</p>
{% if person2 %}
    <p>{{ person2 }}</p>
{% elif person1 %} 
    <p>{{ person1 }}</p>
{% else %}
    <p>什么人都有</p>
{% endif %}
{% if name|length > 3 %}
    <p>名字长度大于3</p>
{% else %}
    <p>名字长度小于3</p>
{% endif %}

注:if条件和filter配合使用

 

案例:如果变量名字太长,可以用with结构

<p>with语句</p>
{% with name=name_list2.1.2 %}
    {{ name }}
{% endwith %}

注:{{name}}等价于{{name_list2.1.2}}

 

posted @ 2019-10-23 10:18  会飞的发如雪  阅读(119)  评论(0)    收藏  举报