使用Django來處理對於靜態檔案的請求
引言
本方法適用於linux+python2.7+django1.2,使用django自帶的web服務。
同樣也適用於sina app engine。
1、準備工作
準備css檔案,準備js檔案,準備image檔案。
在網站根目錄新建目錄【medias】,在【medias】目錄新建目錄【styles】,用來存放css檔案。
2、配置對於靜態檔案訪問的路徑
2.1、在settings.py檔案中新增靜態檔案的目錄
假設mysite是網站的根目錄,medias是剛才我們新建的目錄
1 2 3 4 5 6 7 |
STATICFILES_DIRS
= (
#
Put strings here, like "/home/html/static" or "C:/www/django/static". #
Always use forward slashes, even on Windows.
#
Don't forget to use absolute paths, not relative paths.
'mysite/medias'
)
|
2.2、在urls.py檔案中新增如下路由規則
1 2 3 4 5 6 7 |
urlpatterns=patterns( '' ,
(r '^site_medias/(?P<path>.*)$' , 'django.views.static.serve' ,
{ 'document_root' :mysite.settings.STATICFILES_DIRS,
'show_indexes' :
True}),
)
|
將對於site_medias目錄及其子目錄的檔案的請求,對映到settings.py檔案設定的STATICFILES_DIRS中指定的路徑。並且使用了show_indexes引數,引數設定為True之後,表明可以通過瀏覽器,瀏覽medias目錄的資源,包括瀏覽資料夾及其檔案。瀏覽地址是http://localhost:8080/site_medias/,假設服務使用埠是8080,在設定了上面的選項之後,應該可以通過該地址瀏覽資料夾及檔案。
3、使用靜態檔案
3.1、在template檔案中引用css檔案
在base.html檔案的head標記中新增下面的css引用。
1 |
<link
href= "/site_medias/styles/site.css" rel= "stylesheet" type= "text/css" >
|
3.2、在普通html檔案中引用css檔案
也是直接在html檔案的head標記中新增下面的內容。
1 |
<link
href= "/site_medias/styles/site.css" rel= "stylesheet" type= "text/css" >
|
總結
完成上面的工作之後,css就應該開始起作用了。對於圖片和js的引用也是類似的做法。
在django的官網有兩個連結講到了相關的內容,詳細情況大家可以點選檢視。
上面這個連結的主題是:How to serve static files,也就是如何使用靜態檔案(包括css,js指令碼,圖片等等)。裡面講到了,可以使用上面的辦法使用靜態檔案,但是django主要是用來處理動態檔案的,上面的辦法不高效,並且不安全,所以是不推薦的。在開發環境用一下還可以,但是生產環境,推薦使用專業的web服務來提供靜態檔案的處理。專業的web服務包括:appache、lighttpd、cherokee等等。結合這些專業web服務的使用者,在文章中也有連結。
上面的連結就是將如何使用django來處理靜態檔案,一些處理的細節,包括配置啊、引用啊什麼呢的。