第六章

這一篇從?教程第 5 部分?結(jié)尾的地方繼續(xù)講起枝冀。在上一節(jié)中我們?yōu)榫W(wǎng)絡(luò)投票應(yīng)用編寫了測試衅鹿,而現(xiàn)在我們要為它加上樣式和圖片颜启。

除了服務(wù)端生成的 HTML 以外,網(wǎng)絡(luò)應(yīng)用通常需要一些額外的文件——比如圖片走贪,腳本和樣式表——來幫助渲染網(wǎng)絡(luò)頁面佛猛。在 Django 中,我們把這些文件統(tǒng)稱為“靜態(tài)文件”坠狡。

對于小項(xiàng)目來說继找,這個(gè)問題沒什么大不了的,因?yàn)槟憧梢园堰@些靜態(tài)文件隨便放在哪逃沿,只要服務(wù)程序能夠找到它們就行婴渡。然而在大項(xiàng)目——特別是由好幾個(gè)應(yīng)用組成的大項(xiàng)目——中,處理不同應(yīng)用所需要的靜態(tài)文件的工作就顯得有點(diǎn)麻煩了凯亮。

這就是?django.contrib.staticfiles?存在的意義:它將各個(gè)應(yīng)用的靜態(tài)文件(和一些你指明的目錄里的文件)統(tǒng)一收集起來边臼,這樣一來,在生產(chǎn)環(huán)境中假消,這些文件就會(huì)集中在一個(gè)便于分發(fā)的地方柠并。

自定義?應(yīng)用?的界面和風(fēng)格?

首先,在你的?polls?目錄下創(chuàng)建一個(gè)名為?static?的目錄。Django 將在該目錄下查找靜態(tài)文件臼予,這種方式和 Diango 在?polls/templates/?目錄下查找 template 的方式類似鸣戴。

Django 的?STATICFILES_FINDERS?設(shè)置包含了一系列的查找器,它們知道去哪里找到 static 文件粘拾。AppDirectoriesFinder?是默認(rèn)查找器中的一個(gè)窄锅,它會(huì)在每個(gè)?INSTALLED_APPS?中指定的應(yīng)用的子文件中尋找名稱為?static?的特定文件夾,就像我們在?polls?中剛創(chuàng)建的那個(gè)一樣半哟。管理后臺采用相同的目錄結(jié)構(gòu)管理它的靜態(tài)文件酬滤。

在你剛創(chuàng)建的?static?文件夾中創(chuàng)建一個(gè)名為?polls?的文件夾,再在?polls?文件夾中創(chuàng)建一個(gè)名為?style.css?的文件寓涨。換句話說,你的樣式表路徑應(yīng)是?polls/static/polls/style.css氯檐。因?yàn)?AppDirectoriesFinder?的存在戒良,你可以在 Django 中簡單地使用以?polls/style.css?的形式引用此文件,類似你引用模板路徑的方式冠摄。

靜態(tài)文件命名空間

雖然我們?可以?像管理模板文件一樣糯崎,把 static 文件直接放入?polls/static?——而不是創(chuàng)建另一個(gè)名為?polls?的子文件夾,不過這實(shí)際上是一個(gè)很蠢的做法河泳。Django 只會(huì)使用第一個(gè)找到的靜態(tài)文件沃呢。如果你在?其它?應(yīng)用中有一個(gè)相同名字的靜態(tài)文件,Django 將無法區(qū)分它們拆挥。我們需要指引 Django 選擇正確的靜態(tài)文件薄霜,而最簡單的方式就是把它們放入各自的?命名空間?。也就是把這些靜態(tài)文件放入?另一個(gè)?與應(yīng)用名相同的目錄中纸兔。

將以下代碼放入樣式表(polls/static/polls/style.css):

polls/static/polls/style.css

lia{color:green;}

下一步惰瓜,在?polls/templates/polls/index.html?的文件頭添加以下內(nèi)容:

polls/templates/polls/index.html

{%loadstatic%}<linkrel="stylesheet"type="text/css"href="{%static'polls/style.css'%}"/>

{%?static?%}?模板標(biāo)簽會(huì)生成靜態(tài)文件的絕對路徑。

以上就是你全部需要做的事汉矿。瀏覽器重載?http://localhost:8000/polls/崎坊,然后你可以看到投票鏈接是綠色的(Django 樣式),這意味著你的樣式表被正確加載了洲拇。

添加一個(gè)背景圖?

接著奈揍,我們會(huì)創(chuàng)建一個(gè)用于存在圖像的目錄。在?polls/static/polls?目錄下創(chuàng)建一個(gè)名為?images?的子目錄赋续。在這個(gè)目錄中男翰,放一張名為?background.gif?的圖片。換言之蚕捉,在目錄?polls/static/polls/images/background.gif?中放一張圖片奏篙。

隨后,在你的樣式表(polls/static/polls/style.css)中添加:

polls/static/polls/style.css

body{background:whiteurl("images/background.gif")no-repeat;}

瀏覽器重載?http://localhost:8000/polls/,你將在屏幕的左上角見到這張背景圖秘通。

Warning

當(dāng)然为严,{%?static?%}?模板標(biāo)簽在靜態(tài)文件(例如樣式表)中是不可用的,因?yàn)樗鼈儾皇怯?Django 生成的肺稀。你仍需要使用?相對路徑?的方式在你的靜態(tài)文件之間互相引用第股。這樣之后,你就可以任意改變?STATIC_URL`(由?:ttag:`static模板標(biāo)簽用于生成 URL)话原,而無需修改大量的靜態(tài)文件夕吻。

這些只是?基礎(chǔ)?。更多關(guān)于設(shè)置和框架的資料繁仁,參考?靜態(tài)文件解惑?和?靜態(tài)文件指南涉馅。部署靜態(tài)文件?介紹了如何在真實(shí)服務(wù)器上使用靜態(tài)文件。

當(dāng)你熟悉靜態(tài)文件后黄虱,閱讀?此教程的第 7 部分?來學(xué)習(xí)如何自定義 Django 自動(dòng)生成后臺網(wǎng)頁的過程稚矿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市捻浦,隨后出現(xiàn)的幾起案子晤揣,更是在濱河造成了極大的恐慌,老刑警劉巖朱灿,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昧识,死亡現(xiàn)場離奇詭異,居然都是意外死亡盗扒,警方通過查閱死者的電腦和手機(jī)跪楞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來环疼,“玉大人习霹,你說我怎么就攤上這事§帕ィ” “怎么了淋叶?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伪阶。 經(jīng)常有香客問我煞檩,道長,這世上最難降的妖魔是什么栅贴? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任斟湃,我火速辦了婚禮,結(jié)果婚禮上檐薯,老公的妹妹穿的比我還像新娘凝赛。我一直安慰自己注暗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布墓猎。 她就那樣靜靜地躺著捆昏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毙沾。 梳的紋絲不亂的頭發(fā)上骗卜,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天,我揣著相機(jī)與錄音左胞,去河邊找鬼寇仓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烤宙,可吹牛的內(nèi)容都是我干的遍烦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼门烂,長吁一口氣:“原來是場噩夢啊……” “哼乳愉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起屯远,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捕虽,沒想到半個(gè)月后慨丐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泄私,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年房揭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晌端。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捅暴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咧纠,到底是詐尸還是另有隱情蓬痒,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布漆羔,位于F島的核電站梧奢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏演痒。R本人自食惡果不足惜亲轨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸟顺。 院中可真熱鬧惦蚊,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晕粪,卻和暖如春挤悉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巫湘。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工装悲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人尚氛。 一個(gè)月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓诀诊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阅嘶。 傳聞我的和親對象是個(gè)殘疾皇子属瓣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容