模板继承与导入

模板继承的场景一:模版继承1)继承使用步骤1:母板里写入block,就可以被继承,content是名称步骤2:子页面通过extends指定继承那个模板2)如果子页面有自己的css,js怎么

大家好,又见面了,我是你们的朋友全栈君。

模板继承的场景

情况1:通常写页面都有个模板用来框定头部LOGO页面,左侧导航菜单,只有右部的内容不同。如果不使用模板就大量重复工作。

    特别如果头部或者左侧导航需要修改或者添加,所有页面都需要修改。django 通过模板继承解决。

情况2:一个页面如果内容特别多,不可能都一起写同一个页面。比如京东首页内容非常多。如何解决了?django通过include导入其他页面。

一:模版继承

  1)继承使用

    步骤1:母板里写入block,就可以被继承,content是名称 

    {% block title %}
    {% endblock%}

    {% block “content“ %}
    {% endblock%}

    步骤2:子页面通过extends指定继承那个模板

    {% extends 'master.html'%} #继承那个模板

    {% block “content“ %} 这个地方就是替换模板block “content“
        <ul>
            {% for i in u%}
                <li>{{i}}</li> 
            {%endfor%}
    {% endblock%}

    2)如果子页面有自己的css,js 怎么用了?
  A)如果是在子页面写CSS和JS,CSS就不是在头部了,而JS也不是在<body>之前,假如要引用jquery,子页面写的JS会在jquery引用前面,就会不生效

  B)继承CSS与JS都是共有的。
        

  解决方法:

  在模板里css 和js位置在写个block块。然后在block里引入,在这个block写自己的js和css
        注:block和顺序没有关系

二:模板引入使用

  3)一个页面只能继承一个模板,如何解决了?如何使用多个模板,或者引入其他页面

    <% include “a.html” %> 可以引用多次

  4)模板,include,子页面怎么渲染?
        先把自己渲染成字符串,在拿模板和include渲染,所以不存在渲染问题(可以把子页面继承include当做一个整页面)

三:示例

    #url.py
        url(r'^tpl1$',views.tpl1),
        url(r'^tpl2$',views.tpl2),
        url(r'^tpl3$',views.tpl3),

    #views.py

        def tpl1(request):
            u=[1,2,3]
            return render(request,"tp1.html",{"u":u})
        
        def tpl2(request):
            name="alex"
            return render(request,"tp2.html",{"name":name})
        
        def tpl3(request):
            status="已修改"
            return render(request,"tp3.html",{"status":status})

    #模块:master.html
        <!DOCTYPE html>
        <html lang="en">
        <head>
            <meta charset="UTF-8">
            <title>
                {% block title %}{% endblock %} <!--这里用来设置标题-->
            </title>
            <link rel="stylesheet" href="/static/common.css">
        
            {% block css %}<!--这里用来设置子页面自己的css-->
            {% endblock %}
        </head>
        <body>
            {% block content %}<!--这里用来设置子页面自己的内容-->
            {% endblock %}
            <script src="/static/js/jquery-1.12.4.js"></script>
          <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
            {% block js %}<!--这里用来设置子页面自己的js-->
            {% endblock %}
        </body>
        </html>

    #子页面:tp1.html
        {% extends "master.html" %} <!-- 继承那个模板-->

        {% block title %}
            用户管理
        {% endblock %}
        
        {% block css %}
            <style>
                body{
                    background-color: aqua;
                }
            </style>
        {% endblock %}
        
        {% block content %}
            <h1>用户管理</h1>
            <ul>
                {% for i in u %}
                    <li>{{ i }}</li>
                {% endfor %}
            </ul>
        {% endblock %}
    #子页面:tp2.html
        {% extends "master.html" %}
        
        {% block content %}
            <h1>修改密码{{ name }}</h1>
            {% include "tp3.html" %} <!-- 引入其他页面-->
        {% endblock %}

    #include页面:tp3.html
    <div>
        <input type="text">
        <input type="button" value="++">
    </div>

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124460.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • AIC和BIC准则详解

    AIC和BIC准则详解很多参数估计问题均采用似然函数作为目标函数,当训练数据足够多时,可以不断提高模型精度,但是以提高模型复杂度为代价,同时带来一个机器学习中非常普遍的问题——过拟合。所以,模型选择问题在模型复杂度与模型对数据集描述能力(即似然函数)之间寻求最佳平衡。人们提出许多信息准则,通过加入模型复杂度的惩罚项来避免过拟合问题,此处我们介绍一下常用的两个模型选择方法:1.赤池信息准则(AkaikeInformationCriterion,AIC)AIC是衡量统计模型拟合优良性的一种标准,由日本统计学家赤池弘次在

    2022年5月23日
    77
  • 深入理解Volatile关键字及其实现原理「建议收藏」

    深入理解Volatile关键字及其实现原理「建议收藏」volatile的用法volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。volatile的用法比较简单,只需要在声明一个可能被多线程同时访问的变量时,使用volatile修饰就可以了。如以下代码,是一个比较典型的使用双…

    2022年5月12日
    39
  • 基于VUE + Echarts 实现可视化数据大屏展示效果[通俗易懂]

    基于VUE + Echarts 实现可视化数据大屏展示效果[通俗易懂]中国(寿光)国际蔬菜科技博览会智慧农业系统—LED拼接屏展示前端开发文档上线后呈现效果:一、开发需求及方案制定1、确定现场led拼接屏的宽高比,按照1920px*1080px的分辨率,F11全屏后刚好占满整屏且无滚动条;2、与产品设计确定页面相关功能:第一屏相关功能:实时时间、当地天气、菜博会基本信息、图表数据统计(近三日人流量、…

    2022年6月7日
    102
  • ssd硬盘数据怎么恢复_硬盘数据转移到另一个硬盘

    ssd硬盘数据怎么恢复_硬盘数据转移到另一个硬盘英特尔(Intel)SSD数据恢复概览现在,英特尔SSD是目前市面上最受欢迎的SSD硬盘之一,这都归功于它的几个优点。例如:快速的读取和写入速度、计算性能的增强、高级的加密标准(AES)等等。尽管有这些优秀的硬盘特性,还是无法避免在一切情境下资料丢失的问题。为什么硬盘中的资料会丢失?可能有以下几种原因:包括意外删除、格式化、病毒攻击、电源激增、操作系统崩溃或者说在一些情况下导致SSD不可独、初始化或坏掉。当意外发生之时,能否成功从IntelSSD硬盘中恢复数据?是的,当然可以!在你将新数据写入

    2022年9月15日
    0
  • Remobjects使用经验

    Remobjects使用经验RemObjectsRemObjects提示:我们相信本文是正确的,但我们不做任何保证.在此感谢Henrick写的文章,很高兴在此发表.介绍RemObjects是功能强大可扩展的远程框架;但是当考虑

    2022年7月1日
    22
  • cap的原理_圣维南原理的应用举例

    cap的原理_圣维南原理的应用举例在分布式系统中,有一个基本原则叫做CAP,consistence,一致性,availability,可用性,partitiontolerance分区容错性。一致性,在这里指的是分布式系统的各个副本

    2022年8月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号