91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django模板繼承和靜態資源如何使用

發布時間:2022-03-04 13:59:10 來源:億速云 閱讀:138 作者:iii 欄目:web開發

這篇“Django模板繼承和靜態資源如何使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Django模板繼承和靜態資源如何使用”文章吧。

  1、模板繼承

  對于一個網站來說,會存在很多的html文件,但是由于一些頁面中會有相同的頁面結構出現。也就導致了多個html文件中代碼是重復的,所以為了在html中減少重復的代碼的出現,簡化html結構,可以將多個頁面中相同的html代碼,單獨的抽離出來放在一個html文件中,其他的html文件如果想要使用這部分內容,直接繼承過去就可以了,有點類似于類的繼承關系。

  繼承關系:父模板和子模板。

  2、假設現在有一個網站,它的首頁、列表頁和詳情頁這些頁面,頁面頂部的導航條和頁面底部的工具條是一樣的,唯一變化的就是其中內容。畫了一個簡陋的圖,大致如下圖所示:

  對于這個網站,其頁面結構%70(浮夸風()?""")以上的內容都是相似的,如果我們每一個html文件都寫入這些相同部分的代碼,也是可以的,只是會造成代碼的冗余等。為了方便解決這個問題,減少重復代碼的出現,模板的繼承就很好的解決了這個問題。

  現在我們來實現模板的繼承。

  1、創建項目和app

  django-admin startproject djangotemplateinherit

  cd djangotemplateinherit

  python manage.py startapp teminherit

  2、在項目根目錄下創建templates文件夾。

  3、在urls.py文件中編寫路由。

  4、編寫業務邏輯,即視圖函數。

  5、在templates文件夾下新建3個html文件。

  4、再新建一個nav.html,表示公共的導航條部分。

  同時,我們在views.py文件中更改視圖函數,渲染模板。

  5、我們在nav.html中寫入如下代碼

  6、分別在index.html,list.html,detail.html中引入這個nav.html導航條模板。

  模板的繼承需要使用到extends關鍵字。

  extends:關鍵字表明了當前文件index.html所繼承的父模板

  繼承時會將此文件(當前案例是nav.html文件)的所有代碼全部繼承。

  在index.html文件中寫入如下代碼:

  其他兩個list.html,detail.html文件同index.html,寫入相同的內容。

  7、運行查看

  此時,這三個html都使用了公共的導航條(nav.html文件)。

  8、雖然使用了公共的導航條,但是每個html文件中,此時我們不能加入每個頁面的內容(即首頁內容,列表頁內容,詳情頁內容),不信,你可以嘗試?此時我們在index.html中寫入一個h3標簽。

  再次刷新網頁,發現首頁上并沒有我們想要的內容。

  原因是我們已經將nav.html中內容固定了,extends繼承模板時,將nav.html文件的內容完全引入,替換掉index.html的內容,所以我們自己寫的h3標簽是不可以運行的。值得注意的是,如果把h3標簽放在{% extends ‘nav.html’ %}代碼之前,是可以運行顯示的,這里不做嘗試,望讀者自行嘗試。

  9、現在我們的需求是index,list,detail的模板文件在渲染后展示不同的內容。但由于這index,list,detail三個模板文件我們現在繼承的是nav.html的內容,直接將代碼{% extends ‘nav.html’ %}添加在后面又不可以,放在{% extends ‘nav.html’ %}之前又失去了公共導航條的意義。那么現在唯一剩下的解決方案就是更改nav.html,使其能夠讓我們在不同的模板文件中實現自定義的功能。

  Django為我們提供了一個block標簽。如果子模板需要在當前這個頁面的基礎上,添加一些自己頁面的內容,使用django內置的模板標簽block(代碼塊)即可,需要給這個塊起一個名稱。可以隨意起。

  10、現在我們修改nav.html,預留自定義代碼的接口。即增加{% block content %} {% endblock %}。

  同時在index.html文件中增加一個自定義的h2標簽。

  再次刷新,此時index首頁已經發生變化。多出了我們自定義的h2標簽。相應的其他兩個模板文件的變更與index.html相同,這里不做嘗試。

  11、雖然自定義了index首頁的內容。但是細心的同學就會發現了一個小小的缺陷。

  那就是打開index首頁的選項卡上仍舊顯示的是nav.html中的title字段。我們知道,諸如伯樂在線這個網站,每點擊導航欄的一個模塊,新打開的窗口上的額標題就會發生變化。而我們現在繼承了模板,相應的title內容也就寫死了。那么該怎么處理呢?

  12、為了方便解決這個問題,我們將nav.html的內容再次做出修改,如下圖所示:

  注意:

  在block中設置的標簽,就相當于是一個title的默認值。

  如果子模板沒有重寫這個title塊,就使用這個默認值,如果子模板重寫了這個title塊,就使用子模板的值。

  13、由于我們需要變更index首頁的title標題,所以我們需要對index.html的內容再次做出修改。通過block預留的接口,修改我們需要的title。這一點類似于類,我們可以對類進行繼承,在繼承的同時對其不符合我們需求的進行重寫。

以上就是關于“Django模板繼承和靜態資源如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜鼓县| 安阳市| 新田县| 平舆县| 庆云县| 武川县| 额敏县| 三原县| 廊坊市| 鹰潭市| 彭阳县| 霍州市| 日土县| 上栗县| 安乡县| 永顺县| 中卫市| 南华县| 怀宁县| 惠东县| 云阳县| 凤翔县| 湟源县| 理塘县| 双牌县| 九台市| 海兴县| 英山县| 岫岩| 屯留县| 博客| 永顺县| 乐昌市| 望谟县| 芜湖市| 万全县| 濉溪县| 澄城县| 西贡区| 抚宁县| 宿州市|