本例中,我们的项目有两个 app,分别是 myapp 和 userapp,这样我们的静态文件会分为三部分:
- 公共部分(比如全站都会使用的css、jquery、背景图等)
- myapp 使用的静态文件
- userapp 使用的静态文件
首先我们在 settings.py
中这样设置:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# 我们的静态文件分开三个部分
# 这里我们设为三个路径
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'myproject', 'static'),
os.path.join(BASE_DIR, 'myapp', 'static'),
os.path.join(BASE_DIR, 'userapp', 'static'),
]
现在我们这样来组织文件结构:
/myproject # 根目录
/myproject
/static # 公共的静态文件放这里
/myproject
/css
/image
/js
…………(setting、urls等文件)
/myapp
/static # myapp使用的静态文件放这里
/myapp
/css
/image
/js
…………(views、models等文件)
/userapp
/static # username使用的静态文件放这里
/userapp
/css
/image
/js
…………(views、models等文件)
/db.sqlite3
/manage.py
注意到,每个 app 中的 static 文件夹内都在包含一个和 app 名称一样的文件夹,在该文件夹内在分别放置 css、js、image 等文件夹。这样做的好处是在部署项目时,执行完 python manage.py collectstatic
命令之后,静态文件被收集到 STATIC_ROOT
之后依旧是根据 app 分开的:
/static
/admin # django 自带后台的静态文件
/myapp
/myproject
/userapp
当我们要引入公共部分的静态文件时:
{% static 'myproject/css/xxx.css' %}
引入 myapp 的静态文件:
{% static "myapp/image/xxx.jpg" %}
引入 userapp 的静态文件:
{% static "userapp/image/xxx.jpg" %}
网友评论