關於Django中Static和Media的設置問題(尤爲是css和js靜態文件加載的問題),網上有不少回答,可是發現有至關一部分回答並不能解決問題。有的多是Django版本問題,有的是把media和static搞混了。下面是關於Django 1.9+ 中static與media的總結:css
區別:
- Static是不變的,造成網站的核心部件,如 CSS文件,JS文件,背景圖片等;
- Media是變更的,由用戶定義的文件,如 用戶頭像, 用戶上傳的圖片或視頻等。
配置方法:
1.Static
- 在項目根目錄新建static文件夾
- 在setting.py中設置:
- STATIC_DIR=os.path.join(BASE_DIR,'static')
- STATICFILES_DIRS=[STATIC_DIR,] (當由多個靜態文件目錄時,可加入)
- 在模板文件的<!DOCTYPE html> 下面(不要寫到最開頭),寫入{% load staticfiles %}
- 在模板文件中引用:{% static '
' %}
- 在項目根目錄新建media文件夾
- 在setting.py中設置
- MEDIA_DIR=os.path.join(BASE_DIR,'media')
- MEDIA_ROOT=MEDIA_DIR
- MEDIA_URL='/media/'(先後都有斜槓)
- TEMPLATES設置中的context_processor選項中加入:'django.template.context_processors.media',
- 在項目urls文件中
- from django.conf import settings
- from django.conf.urls.static import static
- 在文件最後加上: +static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
- 在模板文件中引用:
