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

本例中,我们的项目有两个 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" %}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,810评论 19 139
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 115,193评论 24 450
  • 你的眼眸, 是带走失眠的心事, 重重的, 是开始循环, 还是随时准备停止。 于是我喝醉了, 别让我走, 你看我还有...
    曾龙纸媒写作发表培训阅读 2,905评论 0 2
  • 问题一:重大疾病保险保哪些重大疾病? 答:大多数重大疾病险产品所保障的范围都是包含恶性肿瘤、心肌梗死、脑溢血等6大...
    金蛛金服阅读 3,229评论 0 1
  • 一、spring事务介绍 spring事务优点 对不同的api进行统一编程模型,如JTA,JDBC,Hiberna...
    青芒v5阅读 12,323评论 2 22

友情链接更多精彩内容