django-模板层基础2

1、模板的导入
    {% include 模板名%}
    首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头部不需要改变),那么
    这样我们可以把那个头部重新写在一个模板中,其他每个页面需要用到话,就直接在模板中导入头部那个模板
    {% include 'head.html'%}就可以了

2、模板的继承
    上面模板的导入的用处就是:被导入的模板运用到某个模板中一部分。
    而模板的继承呢?
        就是其他模板基于一个模板(母版),就一部分需要改变,其他不需要变化,那么就用上模板的基础了
    首先:你需要自己写一个模板,并在需要随url改变的内容写
         {% block 名字 %}
         {% endblock %}    #相当于在母版中占了快区域
    然后:你其他模板需要基础改模板进行修改的话,你必须先要继承母版 {% extend 母版名%}
          写好了,就在下面写
          {% block 名字 %}
            中间就是一系列代码块
          {% endblock %}

总结:1、我们用模板的继承,导入为的是减少代码冗余
     2、母版中可以有多个{% block 名字 %}
                     {% endblock %}
     3、你也在母版中的block标签中写一些代码,为何叫继承呢?面向对象应该知道吧,我在其他母版中写{% extend 母版名%},
        也就是继承了母版,block相当于基类的方法,我在子类写一个相同的方法,最终是实现子类里的方法。
        所以你在母版中block写了代码,你子类block也写了代码,母版中block的代码不会执行。(前提block名是一样的)

3、静态文件操作
    静态文件的一些知识不说了,
    假设:我在模板中多次引用到了静态文件的文件,我的setting里的STATIC_URL = '/static/',STATIC_URL的值发生了
         改变,变成了'/static11/',那么我模板那些用到静态文件的地方,肯定是用不了,改的话还要一个一个去改,是不是很麻烦

    解决方法:哈哈,这个假设是不是熟悉,对,就是反向解析。我们也可以和解决反向解析一样的思路
         方法一:
         在模板中,我们先导入一个py文件 {%load static%}  #这个是不是我们自定义标签那里用到过,索引这个static是文件
         导入该文件之后,我们就可以使用标签了 {% static 'css/my_css.css' %} 就算不看源码,我们也应该知道大致怎么实现。
         他肯定是使用了os.path.join()类似的方法对吧,路径拼接。
         方法二:
         和方法一一样,先导入static文件{%load static%}
         然后 '{% get_static_prefix %}css/mycss.css ',这就是简单的字符串操作吧,
         那么我们就应该能知道{% get_static_prefix %}这个标签的返回值应该就是settings文件里的STATIC_URL,对吧。

猜你喜欢

转载自www.cnblogs.com/zhuchunyu/p/9954525.html