W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本教程從教程第 5 部分結(jié)束的地方開始。我們已經(jīng)建立了一個經(jīng)過測試的網(wǎng)絡(luò)投票應(yīng)用程序,現(xiàn)在我們將添加一個樣式表和一個圖像。
除了服務(wù)端生成的 HTML 以外,網(wǎng)絡(luò)應(yīng)用通常需要一些額外的文件——比如圖片,腳本和樣式表——來幫助渲染網(wǎng)絡(luò)頁面。在 Django 中,我們把這些文件統(tǒng)稱為“靜態(tài)文件”。
對于小項目來說,這個問題沒什么大不了的,因為你可以把這些靜態(tài)文件隨便放在哪,只要服務(wù)程序能夠找到它們就行。然而在大項目——特別是由好幾個應(yīng)用組成的大項目中,處理不同應(yīng)用所需要的靜態(tài)文件的工作就顯得有點麻煩了。
這就是 ?django.contrib.staticfiles
? 存在的意義:它將各個應(yīng)用的靜態(tài)文件(和一些你指明的目錄里的文件)統(tǒng)一收集起來,這樣一來,在生產(chǎn)環(huán)境中,這些文件就會集中在一個便于分發(fā)的地方。
首先,在你的 ?polls
?目錄下創(chuàng)建一個名為 ?static
?的目錄。Django 將在該目錄下查找靜態(tài)文件,這種方式和 Diango 在 ?polls/templates/
? 目錄下查找 template 的方式類似。
Django 的 ?STATICFILES_FINDERS
?設(shè)置包含了一系列的查找器,它們知道去哪里找到 static 文件。?AppDirectoriesFinder
?是默認(rèn)查找器中的一個,它會在每個 ?INSTALLED_APPS
?中指定的應(yīng)用的子文件中尋找名稱為 ?static
?的特定文件夾,就像我們在 ?polls
?中剛創(chuàng)建的那個一樣。管理后臺采用相同的目錄結(jié)構(gòu)管理它的靜態(tài)文件。
在你剛創(chuàng)建的 ?static
?文件夾中創(chuàng)建一個名為 ?polls
?的文件夾,再在 ?polls
?文件夾中創(chuàng)建一個名為 ?style.css
? 的文件。換句話說,你的樣式表路徑應(yīng)是 ?polls/static/polls/style.css
?。因為 ?AppDirectoriesFinder
?的存在,你可以在 Django 中以 ?polls/style.css
? 的形式引用此文件,類似你引用模板路徑的方式。
將以下代碼放入樣式表(?polls/static/polls/style.css
?):
li a {
color: green;
}
下一步,在 ?polls/templates/polls/index.html
? 的文件頭添加以下內(nèi)容:
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">
?{% static %}
? 模板標(biāo)簽會生成靜態(tài)文件的絕對路徑。
這就是你開發(fā)所需要做的所有事情了。
啟動服務(wù)器(如果它正在運行中,重新啟動一次):
...\> py manage.py runserver
重新載入 http://localhost:8000/polls/ ,你會發(fā)現(xiàn)有問題的鏈接是綠色的 (這是 Django 自己的問題標(biāo)注方式),這意味著你追加的樣式表起作用了。
接著,我們會創(chuàng)建一個用于存在圖像的目錄。在 ?polls/static/polls
? 目錄下創(chuàng)建一個名為 ?images
的子目錄。在這個目錄中,放一張名為 ?background.gif
? 的圖片。換言之,在目錄 ?polls/static/polls/images/background.gif
? 中放一張圖片。
隨后,在你的樣式表(?polls/static/polls/style.css
?)中添加:
body {
background: white url("images/background.gif") no-repeat;
}
瀏覽器重載 http://localhost:8000/polls/,你將在屏幕的左上角見到這張背景圖。
?注意:
{% static %}
?模板標(biāo)簽在靜態(tài)文件(例如樣式表)中是不可用的,因為它們不是由 Django 生成的。你應(yīng)該始終使用 相對路徑 在你的靜態(tài)文件之間相互引用,因為這樣你可以更改 ?STATIC_URL
(由 static 模板標(biāo)簽使用來生成 URL),而無需修改大量的靜態(tài)文件。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: