zoukankan      html  css  js  c++  java
  • django模板语法之include

    假如我们有以下模板index.html,代码为:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <div>网页公共头部部分</div>
    
    <h2> 网页body部分 </h2>
    
    <div>网页公共底部部分</div>
    
    </body>
    </html>

    做过web开发的童鞋知道大部分网页的公共头部,公共底部部分代码每个页面都一样,那么就应该将其单独拿出做为一个html, 这样修改这部分代码时候,不需要每个页面都修改, 所以在django中我们可以这么做:

    top.html

    <div>网页公共头部部分</div>  

    bottom.html

    <div>网页公共底部部分</div>  

    index.html

    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
        <meta charset="UTF-8">  
        <title>Title</title>  
    </head>  
    <body>  
      
    {% include 'top.html' %}  
      
    <h2> 网页body部分 </h2>  
      
    {% include 'bottom.html' %}  
      
    </body>  
    </html>  

    我们可以使用django模板引擎的Include语法,来将单独的页面包含到当前模板页面中。有同学有疑问,那我们通过视图传递给模板的上下文,在被包含的模板中可以使用吗?可以直接使用。

    假如我们有如下视图:

    def index(request):  
        return render(request, 'index.html', {'a': 100, 'b': 200})  

    该django的视图函数,传递给模板并渲染模板。

    top.html修改如下:

    <div>网页公共头部部分:{{ a }}</div>  

    这么使用是没有问题的。

    我这里有这样的一个问题,假如所有的页面都使用共同的头部top.html, 可能针对1.html 2.html 3.html所使用的头部有些样式不一样,所需top.html:

    <div classs='acss'>网页公共头部部分</div>  

    但是对于5.html, 6.html使用的头部样式为:

    <div class='bcss'>网页公共头部部分</div>  

    很显然,如果直接通过include方式包含公共头部,会导致一些页面显示问题。既然部分参数不一样,include允许我们传递参数给被include的模板,我们可以使用with语法,那么问题解决如下:

    {{ % include 'top.html' with mycss='acss' % }}  

    top.html可修改如下:

    <div class='{{mycss}}'>网页公共头部部分</div>  

    被包含模板中部分参数,由我们include的时候动态指定,那么top.html就不会因为细微差别而编写多份代码了。

  • 相关阅读:
    【Spring源码深度解析系列 】Spring整体架构
    【Spring Boot && Spring Cloud系列】在spring-data-Redis中如何使用切换库
    自定义异常
    Java IO
    多线程和虚拟机的宏观理解
    mybatis添加记录时返回主键id
    从JVM角度看i++ 与++i
    JVM指令集介绍
    jvm 指令集代码
    javap -c命令详解
  • 原文地址:https://www.cnblogs.com/huchong/p/8046969.html
Copyright © 2011-2022 走看看