背景
在一個項目中,難免會有css文件,js文件以及圖片,這些東西一般都是不會改動的,那么在項目中應該把他們放到項目中的何處才合適呢?
答案就是把它們都放到一個static目錄下,因此,首先應該在項目下新建一個目錄 static
在settings.py中配置 static 目錄的路徑
雖然已經創建好了static 目錄,但是如何在項目中導入該目錄下的文件呢?首先應該在settings.py 文件中配置它的路徑
打開 settings.py 文件,在最下面添加下面幾行代碼
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"), # BASE_DIR是項目的絕對路徑,在連上static,就是static目錄的路徑了
)
思考:兩個static各自代表什么
在settings.py中添加完上述的代碼后會有這樣兩個static

上圖中的兩個static雖然名字一樣,但是作用卻千差萬別
STATIC_URL = '/statics/' 相當於給static目錄取了一個別名,以后再前端引入static目錄里面
的文件時,直接用/static/jquery.js就可以了,也就是說這里引入文件時使用的static是個別名,
而與那個static目錄沒有關系
而 os.path.join 里面添加的static就是存放js,css等文件的目錄名了。
所以,static目錄的名字可以隨便改,只要在settings.py中配置好它的正確路徑就可以了,
而項目中引用的時候用的是它的別名,而不管這個目錄的真實名稱是什么
在項目中引入static目錄下的文件
在配置好static目錄的路徑后,就可以在項目中導入它里面的文件了,那么如何導入呢?Django提供了兩種方法
方式一
直接使用 static 名導入,注意,這里的static 是別名
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<script src="/static/jquery.js"> <!-- 直接通過別名static查找 -->
</script>
</body>
</html>
方式二(推薦使用)
通過 {% load staticfiles %} 跟 {% static %} 導入
{% load staticfiles %} <!-- 在此處先進行導入 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<script src="{% static 'jquery.js' %}"> <!-- 這樣也可以找到 -->
</script>
</body>
</html>
創建static目錄的規則
注意:一般不會將static目錄放在整個項目下,而是每個應用下放一個static文件,這樣看起來更加整潔
那么,如果將static目錄放在了應用下,settings.py中的路徑也應該作出相應的修改
假設在blog應用下放一個static目錄,將settings.py中的配置改一下
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "blog", "static"), # 應該在這里將blog的目錄也添加進去
)
