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 模板名称 %}来包含。

  • 相关阅读:
    Uva 11991 Easy Prblem from Rujia Liu ?
    BANK && IT
    随机数发生器(对拍)-----对比测试
    HDU 1695(GCD)
    欧拉定理与费马定理,离散对数定理
    POJ 2352 (stars)
    线段树
    codeforces 51C(Three Base Stations)
    codeforces 165B(Burning Midnight Oil)
    POJ 2785(4 Values whose Sum is 0)
  • 原文地址:https://www.cnblogs.com/Forever77/p/10133922.html
Copyright © 2011-2022 走看看