多个 app 情况下的静态文件设置

2018-01-05  本文已影响456人  SingleDiego

本例中,我们的项目有两个 app,分别是 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" %}
上一篇 下一篇

猜你喜欢

热点阅读