Django4.0 開始-編寫你的第一個Django應(yīng)用,第6部分

2022-03-16 18:06 更新

本教程從教程第 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ā)的地方。

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

首先,在你的 ?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)文件。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號