django static/media配置


配置示例

# setting.py配置如下
## 訪問 http://IP/static/***.css
STATIC_URL = '/static/'
## python manage.py collectstatic時,把所有靜態文件聚集到此目錄下
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
## 放置公共靜態目錄,jQuery.css這些公共靜態文件
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'common_static')
)

## 訪問 http://IP/media/***.file
MEDIA_URL = '/media/'
## 用戶上傳文件的存放目錄
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# urls.py配置如下,for media訪問
from django.conf.urls import url
from manageInfo.settings import MEDIA_ROOT
from django.views.static import serve

urlpatterns = [
    url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),
]

 

具體說明

Static是不變的,形成網站的核心部件,如 CSS文件,JS文件,背景圖片等;

Media是變動的,由用戶定義的文件,如 用戶頭像, 用戶上傳的圖片或視頻等;

static

1. STATIC_ROOT
說明:STATIC_ROOT 是在部署靜態文件時(pyhton manage.py collectstatic)所有的靜態文靜聚合的目錄。
當部署項目時,在終端輸入:
python manage.py collectstatic
django會把所有的static文件都復制到STATIC_ROOT文件夾下

2. STATICFILES_DIRS
django放置靜態文件有兩種方式,一是在每個app里新建一個static目錄,將靜態文件放置其中;另一種是對公共文件的處理,如jQuery bootstrap等,這時需要配置 STATICFILES_DIRS 了。
STATICFILES_DIRS告訴django,首先到STATICFILES_DIRS里面尋找靜態文件,其次再到各個app的static文件夾里面找,惰性原則,找到即停止。

3. STATIC_URL
http://IP/static/{{static目錄下對應的路徑名字}}
項目路徑是,{{projectName}}/static/common_static/test.css
則訪問url是: http://IP/static/common_static/test.css

media

1. MEDIA_ROOT
設置用戶上傳文件的保存目錄

2. MEDIA_URL
代表用戶通過URL來訪問這個本地地址的URL。如本機http://127.0.0.1/, MEDIA_URL設置為”/media/”,那么通過http://127.0.0.1/media/*** 就可以訪問相關的上傳圖片或者其他資源。

 

html中引用靜態文件

static文件

  方法一、   
    在頁面的較上處寫:
      {% load staticfiles %}
    在 link script 等src 寫 :
      {%static 'xxx.css'%} 
      {%static 'xxx.js'%}
  方式二、
    在 link script 等src 寫 :
      /static/xxx.cs

media文件

<img src="{{ user_obj.avatar.url }}" alt="user_avatar">

 

 注意點

1. 在html中引用{{ media_url }}

 2. app下的static目錄

最好是{{ projectName }}/appName/static/appName/***.css 

當兩個app都含有a.css時 ,因為django遵循惰性尋找原則,找到一個即停止尋找,如果有重復的靜態文件,則只會隨機找到第一個符合的文件。

 

具體使用示例

https://blog.csdn.net/Ayhan_huang/article/details/78193553

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM