django靜態文件配置原理
靜態文件配置就是為了讓用戶請求時django服務器能找到靜態文件返回。
首先要理解幾個概念:
媒體文件:用戶上傳的文件 靜態文件:css,js,image等 開發環境:使用django內置服務器處理靜態文件 生產環境:使用apache2/nginx服務器處理靜態文件映射所以在配置時要分清楚開發環境還是生產環境,這個后面會詳細介紹。
下面先介紹一下服務器查找靜態文件的原理,這樣我們才能更好的配置。
引言
在網站開發階段,對于靜態資源文件比如JS,CSS等文件都是未經過壓縮合并處理的,這對于訪問量巨大的網站來說不僅浪費帶寬,而且也會影響網站的訪問速度。
django-compressor可以把js/css等靜態文件壓縮,這樣不僅有利于減少網站的請求次數,還能節省網絡帶寬。
而這篇文章即是介紹使用如何使用Python的Django框架中的壓縮組件django-compressor!
下面就介紹如何在Django中集成django-compressor!
安裝django-compressor
安裝很簡單,pip安裝下就可以了:
$ pip install django-compressor
然后在'setting'的INSTALLED_APPS中添加
INSTALLED_APPS = [ #others 'compressor']
setting配置
首先確保django.contrib.staticfiles
已經包含在INSTALLED_APPS中,django1.6及以上版本是默認包含該app在其中的.
指定STATIC_URL
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic')# STATIC_URL是客戶端訪問靜態資源的根路徑配置 STATIC_URL = '/static/'STATICFILES = os.path.join(BASE_DIR, 'static')
配置STATICFILES_FINDERS
默認django會從每個app目錄的static子目錄下查找靜態文件,因此通常情況下你都是將相關靜態文件放在各自的app/static目錄下。Django怎么知道從app/static目錄查找靜態文件呢?Django有個默認配置項STATICFILES_FINDERS:
STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', #other 'compressor.finders.CompressorFinder',)
添加django-compressor配置:
Django-Compressor開啟與否取決于DEBUG參數,默認是COMPRESS_ENABLED 與 DEBUG 的值相反。因為 Django-Compressor 的功能本身是用在生產環境下項目發布前對靜態文件壓縮處理的。因此想在開發階段 (DEBUG=True) 的時候做測試使用,需要手動設置 COMPRESS_ENABLED=True
COMPRESS_ENABLED = TrueCOMPRESS_OFFLINE = TrueCOMPRESS_CSS_FILTERS = [ #creates absolute urls from relative ones 'compressor.filters.css_default.CssAbsoluteFilter', #css minimizer 'compressor.filters.cssmin.CSSMinFilter']COMPRESS_JS_FILTERS = [ 'compressor.filters.jsmin.JSMinFilter']
新聞熱點
疑難解答