使用Django來處理對於靜態檔案的請求

像教授發表於2017-11-26

引言

本方法適用於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. STATICFILES_DIRS = ( 
  2.  
  3. # Put strings here, like “/home/html/static” or “C:/www/django/static”. 
  4.  
  5. # Always use forward slashes, even on Windows. 
  6.  
  7. # Don`t forget to use absolute paths, not relative paths. 
  8.  
  9. `mysite/medias` 
  10.  

2.2、在urls.py檔案中新增如下路由規則

 


  1. urlpatterns=patterns(“, 
  2. (r`^site_medias/(?P<path>.*)$`,`django.views.static.serve`, {`document_root`:mysite.settings.STATICFILES_DIRS, `show_indexes`: True}), 
  3.  
將對於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來處理靜態檔案,一些處理的細節,包括配置啊、引用啊什麼呢的。

 




本文轉自 virusswb 51CTO部落格,原文連結:http://blog.51cto.com/virusswb/749252,如需轉載請自行聯絡原作者


相關文章