我們在編寫模板文件時,需要大量引用css、js、圖片等靜態文件,如果我們將這些文件在服務端存放的路徑都固定寫死那麼將非常不利於後期的擴展,我們可以這麼做
1:將static文件夾路徑配置到settings.py中
# settings.py文件中:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'statics') # 獲取靜態文件在服務端的絕對路徑
]
#STATIC_URL = '/static/'就是爲靜態文件的絕對路徑起了一個別名,以後我們只需要用路徑/static/即可
2、在項目根目錄下新增文件夾statics,爲了更便於管理,可以在statics下新建子文件夾css、js、img等
3.利用解析器"動態解析"靜態文件接口前綴
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--注意:必須先加載文件static.py-->
{% load static %}
<!--注意:此處的static是一個定義在static.py中的一個標籤,名字與文件名一樣而已,不要搞混-->
<link rel="stylesheet" href="{% static 'css/my.css' %}">
</head>
<body>
<h4>我是紅色的,點我就綠</h4>
<img src="{% static 'img/rb.jpeg' %}" alt="">
{% load static %}
<script src="{% static 'js/jquery-3.3.1.min.js' %}"></script>
<script src="{% static 'js/my.js' %}"></script>
</body>
標籤static會接收傳入的參數,然後這根據settings.py中變量STATIC_URL的值拼接出一個完整的路徑,如果STATIC_URL = '/static/',那麼href="{% static 'css/my.css' %}"會被渲染成href="/static/css/my.css",如果STATIC_URL = '/static123/',那麼href="{% static 'css/my.css' %}"會被渲染成href="/static123/css/my.css"。
注意:
# 在settings.py文件中:
STATIC_URL = '/static/' # 這個static不是文件夾的名字 而是接口前綴
"""只要你想訪問靜態文件中的資源 文件路徑就必須用static開頭"""
# 手動將static文件夾中所有的資源暴露給用戶
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'), # 真正的文件夾路徑
os.path.join(BASE_DIR,'static1'), # 真正的文件夾路徑
os.path.join(BASE_DIR,'static2'), # 真正的文件夾路徑
os.path.join(BASE_DIR,'static3') # 真正的文件夾路徑
] # 一旦你是以接口前綴開頭的 那麼就會自動拿着接口前綴後面的文件路徑去列表中一個個的文件夾中查找文件
media配置
media配置 可以暴露給用戶任意的後端資源
網站所使用的靜態文件默認都是放在static文件夾下
用戶上傳的靜態文件 也應該放在一個固定的文件夾下
我們目前實現的是用戶上傳的頭像 固定放在avatar文件夾下了
我們應該創建一個類似於static文件夾 裏面在根據文件的不同創建不同的文件夾存儲數據
# 規定 用戶上傳的所有的靜態文件 全部放到media文件夾下
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
from django.views.static import serve
from 項目名 import settings
# 手動暴露後端文件夾資源
url(r'^media/(?P<path>.*)',serve,{"document_root":settings.MEDIA_ROOT}),