美文网首页
多个 app 情况下的静态文件设置

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

作者: SingleDiego | 来源:发表于2018-01-05 11:44 被阅读456次

    本例中,我们的项目有两个 app,分别是 myapp 和 userapp,这样我们的静态文件会分为三部分:

      1. 公共部分(比如全站都会使用的css、jquery、背景图等)
      1. myapp 使用的静态文件
      1. 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" %}
    

    相关文章

      网友评论

          本文标题:多个 app 情况下的静态文件设置

          本文链接:https://www.haomeiwen.com/subject/brvjnxtx.html