1. 程式人生 > >使用Django來處理對於靜態檔案的請求

使用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來處理靜態檔案,一些處理的細節,包括配置啊、引用啊什麼呢的。