zoukankan      html  css  js  c++  java
  • django模板继承与包含

    可以将每个html公共的部分做成一个基本模板,其他模板继承这个基本模板,则会拥有基本模板的所有内容。

    views.py

    from django.shortcuts import render
    
    def index(request):
        context = {'username': 'zhiliao'}
        return render(request,'index.html',context=context)
    
    def company(request):
        return render(request,'company.html')
    
    def school(request):
        return render(request,'school.html')

    基本模板base.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <header>
        <ul>
            <li><a href="/">首页</a></li>
            <li><a href="{% url 'company' %}">公司</a></li>
            <li><a href="{% url 'school' %}">校园</a></li>
            <li>{{ username }}</li>
        </ul>
    </header>
    <div class="content">
        {% block content %}
            我是父模板中content的代码
        {% endblock %}<!--整个block块相当于是给各个子模板开的接口-->
    </div> 
    <footer>
        这是footer部分
    </footer>
    </body>
    </html>

    在父模板中,block块相当于给各个子模板开了接口,需要继承的子模板可在block块中自定义需要显示的内容。

    其他继承base.html的模板

    {% extends 'base.html' %}  <!--表示这个模板继承base.html,且必须放在最前面,由于两者在统一路径下所以是直接写的,如果不是需要注意路径问题-->
    {% block content %} <!--子模板中的所有内容必须写在block块中-->
    <p>{{ block.super }}</p><!--显示父模板中的block块中的内容-->
     这是school块自己的内容
    {% endblock %}
    <!--写在这里的内容不会被显示-->

    注意:

    1.父模板中可以有多个block块,但是不允许出现相同名称的block块

    2.在子模板中,继承父模板的语句必须放在最前面,并且需要注意路径问题

    3.子模板中自定义显示的任何内容都必须在block块中,放在其他任何地方都不会被显示

    4.可通过{{block.super}}显示父模板中block块中的内容

    显示效果

    同理,可将常用的较小的模块写成一个模板,在需要用到的时候通过{%  include 模板名称 %}来包含。

  • 相关阅读:
    105.输出控制缓存
    修正IE6中FIXED不能用的办法,转载
    Linux C语言 网络编程(二) server模型
    阿里巴巴实习生面试悲慘经历
    初学JDBC,JDBC工具类的简单封装
    初学JDBC,最简单示例
    判断不同浏览器
    POI读写Excel简述之写入
    POI读写Excel简述之读取
    eclipse中新建javaweb项目,查看某些类的源码
  • 原文地址:https://www.cnblogs.com/Forever77/p/10133922.html
Copyright © 2011-2022 走看看