1. 程式人生 > >django-模板層基礎2

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,對吧。