本例中询枚,我們的項(xiàng)目有兩個(gè) app台舱,分別是 myapp 和 userapp涧偷,這樣我們的靜態(tài)文件會(huì)分為三部分:
- 公共部分(比如全站都會(huì)使用的css尚骄、jquery块差、背景圖等)
- myapp 使用的靜態(tài)文件
- userapp 使用的靜態(tài)文件
首先我們?cè)?settings.py
中這樣設(shè)置:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# 我們的靜態(tài)文件分開三個(gè)部分
# 這里我們?cè)O(shè)為三個(gè)路徑
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'myproject', 'static'),
os.path.join(BASE_DIR, 'myapp', 'static'),
os.path.join(BASE_DIR, 'userapp', 'static'),
]
現(xiàn)在我們這樣來組織文件結(jié)構(gòu):
/myproject # 根目錄
/myproject
/static # 公共的靜態(tài)文件放這里
/myproject
/css
/image
/js
…………(setting、urls等文件)
/myapp
/static # myapp使用的靜態(tài)文件放這里
/myapp
/css
/image
/js
…………(views倔丈、models等文件)
/userapp
/static # username使用的靜態(tài)文件放這里
/userapp
/css
/image
/js
…………(views憨闰、models等文件)
/db.sqlite3
/manage.py
注意到,每個(gè) app 中的 static 文件夾內(nèi)都在包含一個(gè)和 app 名稱一樣的文件夾需五,在該文件夾內(nèi)在分別放置 css鹉动、js、image 等文件夾宏邮。這樣做的好處是在部署項(xiàng)目時(shí)泽示,執(zhí)行完 python manage.py collectstatic
命令之后,靜態(tài)文件被收集到 STATIC_ROOT
之后依舊是根據(jù) app 分開的:
/static
/admin # django 自帶后臺(tái)的靜態(tài)文件
/myapp
/myproject
/userapp
當(dāng)我們要引入公共部分的靜態(tài)文件時(shí):
{% static 'myproject/css/xxx.css' %}
引入 myapp 的靜態(tài)文件:
{% static "myapp/image/xxx.jpg" %}
引入 userapp 的靜態(tài)文件:
{% static "userapp/image/xxx.jpg" %}