模板继承与导入

模板继承的场景一:模版继承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)
上一篇 2022年3月29日 下午8:00
下一篇 2022年3月29日 下午8:00


相关推荐

  • react-router4的按需加载实践(基于create-react-app和Bundle组件)

    react-router4的按需加载实践(基于create-react-app和Bundle组件)

    2022年4月2日
    46
  • 校园网络拓扑图及配置_校园网防火墙

    校园网络拓扑图及配置_校园网防火墙该设计topo图(三层:核心、汇聚、接入),并加所有的配置命令。文章中的综合运用设计技术的单个技术如vlan划分、静态路由、OSPF、单臂路由(trunk/access)、DHCP、无线WLAN、Snooping、MSTP、VRRP、防火墙、DNSserver、ACL等。该topo适合了解并熟知单个组网技术的小伙伴,并想学习将单个技术组合应用的小伙伴,使用场景适用于毕业设计、校园网络规划、企业网络规划等场合………………………

    2026年4月15日
    5
  • PHP的webman内存溢出,关于webman文档的疑问

    PHP的webman内存溢出,关于webman文档的疑问不然 start php 中如下代码不会起作用 foreach config services as server if class exists server handler echo processerror class config handler notexists r n continue listen newWo

    2026年3月18日
    1
  • 手机cpu控制免root_cpu利用率低但是卡

    手机cpu控制免root_cpu利用率低但是卡想不想让CPU利用率展示成一首优美的旋律,就像弹琴一样。我的意思是,你想让系统以及task的CPU利用率是多少它就是多少,一切都是由你的程序自己来调制演奏。这需要一种自指机制。哈哈,完全可以,本文来演示,或者说,你可以把本文的内容看作一个戏弄运维人员的恶作剧。运维人员经常会遇到各种CPU高的问题,然后成群结队地去排查,想让队伍更大些吗?想让事情更诡异吗?我让你查,我让你查。哈哈。事先声明,若用本文描述的手段实施恶意行为,将会受到谴责,这并不是一个真正工程师该有的行为,更有辱手艺人的探索精神。

    2025年8月24日
    5
  • 操作系统进程有若干个状态,若一个进程_进程和线程的概念

    操作系统进程有若干个状态,若一个进程_进程和线程的概念第二章进程管理-进程、线程进程的概念进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。(线程是调度的基本单位)程序:是静态的,是一个存放在磁盘里的可执行文件,是一系列指令的集合进程:是动态的,是程序的一次执行过程

    2025年8月28日
    7
  • 贴片器件的识别[通俗易懂]

    贴片器件的识别[通俗易懂]前言实际板子上,贴片原件一般就较小,如果想知道贴片原件值,而且贴片件上有些标识.如果能辨别标识的含义,就不用将器件查下来量了。如果眼神不好(或者原件实在太小了),可以用工业显微镜拍下来,再识别原件上印刷的器件标识。在显微镜下,光滑好看的焊点,也变的那么粗糙:)慢慢记录,见到能用标识识别的器件,就记录一下。笔记0贴片电阻看到0R电阻电阻上画了一个小方框…

    2022年8月21日
    10

发表回复

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

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