django模板

1.模板的参数传递

存在demo1.html如下

<p>my name is {{name}}</p>

对应的views写法如下

def muban(requests):
    context={}
    context['name']='alan'
    return render(requests,'demo1.html',context=context)

简单的逻辑判断:

传递一个字典给模板,判断如果身高高于190则展示高个球员,否则展示矮个球员

在demo2.html中模板写法如下(需要获取name以及height,遍历传递过去的value):

{% for i in context.values %}
        {% if i.height > 190 %} 
            <p>高个球员</p>
            <li>姓名为:{{i.name}} 身高为:{{i.height}}</li>
        {% else %}
        <p>矮个球员</p>
        <li>姓名为:{{i.name}} 身高为:{{i.height}}</li>
        {% endif %}                  
{% endfor %}

对应的views写法如下(遍历传递的参数自身的话,可以直接把自身作为value以字典形式传递过去):

def views_template(requests):
    context={
    "kobe":{"name":"kobe","height":198},
    "iverson":{"name":"iverson","height":183}
    }
    return render(requests,'muban.html',context={"context":context})

2.模板的include

 存在需要反复使用的模板,比如网页的顶部和底部都是一样的信息,可以直接复用

假设存在需要反复使用的html : top.hml   在其他模板中调用的代码如下:

 {% include 'top.html' %}

 

3.模板的继承

打开一个网站时候,点导航栏切换到不同的页面,发现导航部分是不变的,只是页面的主体内容变了,于是就可以写个母模板,其它的子页面继承母模板就可以了

在母模板中 block是用来给字模板继承的,如下:

    <!-- block是一个块标签  content是标签名称 -->
    {% block content %} {% endblock content %}

    <p>---------自动化教程---------</p>

    <!-- block是一个块标签  ad是标签名称 -->
    {% block ad %} {% endblock ad %}

    <!-- block是一个块标签  ad是标签名称 -->
    {% block default %} 
    <h3>默认的内容,如果子页面中没有填充此block,则默认展示该内容</h3>
    {% endblock default %}

在字模板中继承用 extends, 如下:

    {% extends "mother.html" %}

    {% block content %}
    <p>这里是填充的 content block块的内容</p>
    {% endblock content%}

    {% block ad %}
    <p>这里是填充的ad block块的内容</p>
    <ul>列表内容</ul>
    {% for i in ads %}
    <li>{{i}} </li>
    {% endfor %}
    {% endblock ad %}

 

posted @ 2019-12-11 09:28  Alantammm  阅读(121)  评论(0编辑  收藏  举报