django入門-靜態檔案-part6

曲珂發表於2017-03-08

尊重作者的勞動,轉載請註明作者及原文地址 http://www.cnblogs.com/txwsqk/p/6517553.html 

完全翻譯自官方文件 https://docs.djangoproject.com/en/1.10/intro/tutorial06/

我們的web應用除了展示html外,還需要處理一些靜態的檔案,比如圖片,css,js等,當你的應用很小時這很簡單你把靜態檔案放到一個固定的地方就可以

然而當你的專案由多個應用組成時,django在使用靜態檔案時就要收集這些應用的各自的靜態檔案了,django.contrib.staticfiles這個模組就是做這個的

這個模組就是從你的所有應用裡的靜態檔案路徑裡收集然後放到一個地方

你可以在你的應用裡建立一個叫static的資料夾,把你的css檔案放到這個目錄polls/static/polls/style.css, 看起來跟template的目錄結構完全一樣

django的這個配置 STATICFILES_FINDERS定義了很多finder,而預設的finder叫AppDirectoriesFinder,它會根據INSTALLED_APPS裡定義的app的static目錄下查詢靜態檔案

下面我們寫一個css檔案應用到html中

polls/static/polls/style.css

li a {
    color: green;
}

polls/templates/polls/index.html

{% load static %}

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

 {% static %}這個標籤會為你的路徑生成絕對路徑

現在重新整理下你的頁面css已經生效了

上面這個方法只適合在開發階段,也就是說你用runserver啟動並且debug設定為true時才有效果,不適用正式產品 !!!

為什麼呢? 因為django是python的應用框架,處理靜態檔案應該交給更專業的apache或nginx,所以請繼續往下看

django的這節到這裡已經講完了,它讓你自己去看其它內容,比如生產環境如何處理你的靜態檔案,我在這也大體說一下啊

每當你更新了你的靜態檔案你都應該執行這個命令

django-admin collectstatic

這個命令會從你的所有INSTALLED_APPS中的靜態檔案目錄中收集靜態檔案到一個特定的目錄,就是STATIC_ROOT定義的

然後你就配置你的web server(apache,nginx)定義一個location,這個location的路徑就是STATIC_URL的路徑,這樣就串起來了

 

想了解更多 https://docs.djangoproject.com/en/1.10/howto/static-files/deployment/

 

本節完

 

相關文章