Django Static與Media

關於Django中Static和Media的設置問題(尤爲是css和js靜態文件加載的問題),網上有不少回答,可是發現有至關一部分回答並不能解決問題。有的多是Django版本問題,有的是把media和static搞混了。下面是關於Django 1.9+ 中static與media的總結:css

區別:

  • Static是不變的,造成網站的核心部件,如 CSS文件,JS文件,背景圖片等;
  • Media是變更的,由用戶定義的文件,如 用戶頭像, 用戶上傳的圖片或視頻等。

配置方法:

1.Static

  1. 在項目根目錄新建static文件夾
  2. 在setting.py中設置:
    • STATIC_DIR=os.path.join(BASE_DIR,'static')
    • STATICFILES_DIRS=[STATIC_DIR,] (當由多個靜態文件目錄時,可加入)
  3. 在模板文件的<!DOCTYPE html> 下面(不要寫到最開頭),寫入{% load staticfiles %}
  4. 在模板文件中引用:{% static ' ' %}

2. Media

  1. 在項目根目錄新建media文件夾
  2. 在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',
  3. 在項目urls文件中
    • from django.conf import settings
    • from django.conf.urls.static import static
    • 在文件最後加上: +static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
  4. 在模板文件中引用:
相關文章
相關標籤/搜索