先引入两篇相关文章,从中了解更为详细

django 静态资源配置详解

django静态文件配置

Django的STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS(先看)

1.STATIC_URL

#这个必须配置
STATIC_URL = '/statics/'
  
#这个可以不用配置
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'statics'),#BASE_DIR是项目根目录(绝对路径)
)

其中STATIC_URL是用资源路径前缀,用于访问资源时使用STATIC_URL即可,

STATIC_URL是对于每个项目APP的静态资源存放路径

#各个项目路径
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'ts'
)

blog项目:

blog
statics(当前app静态资源路径)
jquery.js
...

其中statics目录就是STATIC_URL,每个项目APP的静态资源存放路径都应该为STATIC_URL

并且STATIC_URL必须存在,才能在模板文件中使用

<script src="statics/jquery.js"></script><!--statics是STATIC_URL前缀,与其保持一致-->

若是不存在STATIC_URL,会报错:

#django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the required STATIC_URL setting.

2.STATICFILES_DIRS

STATICFILES_DIRS不是必须存在

其中STATIC_URL代表各个APP中的静态资源存放路径,放在各个APP目录下

而STATICFILES_DIRS则是放在项目根目录下

STATICFILES_DIRS = (
os.path.join(BASE_DIR,'statics'),
)

项目文件分布:

HelloWorld    项目
   HelloWorld(全局文件存放,项目启动产生)
    settings
    urls
    wsgi
blog (APP)
statics (静态资源文件)
...
ts (APP)
statics
...
statics (项目根目录下静态资源文件)
   common_static(STATIC_ROOT使用)
   ...

一般:当STATICFILES_DIRS存在时,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的statics文件夹里面找

不存在STATICFILES_DIRS时,会直接根据STATIC_URL去APP目录下查找,但是记住,STATIC_URL是必须要添加的

3.STATIC_ROOT

STATIC_ROOT = os.path.join(BASE_DIR, 'common_static')#名字自己随意,必须创建这个文件夹

在生产环境中,集中存放静态资源有利于管理使用静态资源

配置完STATIC_ROOT以后,需要执行

python manage.py collectstatic

命令,配合STATIC_ROOT,会自动将各个app(包括STATICFILES_DIRS中的)下的静态文件集中到STATIC_ROOT目录下。

Type 'yes' to continue, or 'no' to cancel: yes

记得不是y,是yes

其中会发现,对于python manage.py collectstatic这个命令,发现可以将STATICFILES_DIRS的资源添加(而且默认会将admin中的静态文件也加入),但是当STATIC_URL中指定文件夹为statics(或者其他)时,不会添加到STATIC_ROOT指定文件夹中,但是在APP目录下单纯添加static文件夹,而不修改STATIC_URL路径,依然是

STATIC_URL = '/statics/'

当执行python manage.py collectstatic

命令是,会将static文件夹中静态文件加入到STATIC_ROOT中

blog
statics (不会添加氮STATIC_ROOT中,但是STATIC_URL指向他)
static (会添加到STATIC_ROOT中但是STATIC_URL没有指向)
...

所以为了避免不必要的坑,最好选择直接使用

STATIC_URL = '/static/'

python---django中STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS的更多相关文章

  1. Django的STATIC_ROOT和STATIC_URL以及STATICFILES_DIRS

    首先,我们配置静态文件,要在setting.py里面加入如下几行代码: settings.py # the settings above# STATIC SETTINGSSTATIC_URL = '/ ...

  2. Python Django中QQ邮箱授权码问题

    Python Django中QQ邮箱授权码问题 系统及软件版本如下: Ubuntu Kylin 16.04 Python 3.5.1 Django 1.9.7 PyCharm Community Ed ...

  3. RSA算法在Python Django中的简单应用

    说明 RSA算法是当今使用最广泛,安全度最高的加密算法. • RSA算法的安全性理论基础 [引]根据百科介绍,对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难, ...

  4. Python Django 中的STATIC_URL 设置和使用解析

    使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了.特记录下来. 关键的概念:Django中,静态资源的存 ...

  5. python Django中的cookie和session

    目录 Cookie 1.1获取Cookie 1.2设置Cookie Session 1.数据库Session 2.缓存Session 3.文件Session 4.缓存+数据库Session Cooki ...

  6. Django - staticfiles,STATIC_ROOT, STATIC_URL,STATICFILES_DIRS

    staticfiles:这是一个静态资源管理的app,django.contrib.staticfiles.老的版本中,静态资源管理一直是一个问题,部分app发布的时候需要带上静态资源,在部署的时候必 ...

  7. python django中使用sqlite3数据库 存储二进制数据ByteArray

    在python中使用sqlite3数据库存储二进制流数据ByteArray,在django使用sqlite3数据库时,有时候也要注意最好使用二进制流ByteArray插入字符串. 使用ByteArra ...

  8. python django中的orm外键级联删除

    今天添加了一个路由表,路由表做外键,然后添加了几个组,路由表为组的外键,当我使用删除功能对路由表进行删除时,竞然将我的组也相当的删除了:尽管这是测试,但放到生产环境中还是会发生意外的:这个问题要解决: ...

  9. Python Django中一些少用却很实用的orm查询方法

    一.使用Q对象进行限制条件之间 "或" 连接查询 from django.db.models import Q from django.contrib.auth.models im ...

随机推荐

  1. 部署AlwaysOn第二步:配置AlwaysOn,创建可用性组

    AlwaysOn是在SQL Server 2012中新引入的一种高可用技术,从名称中可以看出,AlwaysOn的设计目标是保持数据库系统永远可用.AlwaysOn利用了Windows服务器故障转移集群 ...

  2. FSM Code Generator

    FSM Code Generator is a script code generator for Finite State Machine, it has a viaual designer bas ...

  3. python之GIL理解

    GIL(Global Interpreter Lock) 全局解释器锁 python3中是假的多线程,它不是真正的并行,是利用了cpu上下文的切换而已.同一时间只能有一个线程使用共享数据,其它线程处于 ...

  4. java BigDecimal实现精确加减乘除运算

    java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val)Translates a doubl ...

  5. 第一次scrum meeting

    在这次会议中,我们确定了任务的具体分配.这里截取一部分,每个人都有20个小时左右的编程任务,整个项目共计约140小时. 明天是正式开始软件实现的第一天,下面列出前两天每个人的任务:   第一天 第二天 ...

  6. 12.19daily_scrum

    本阶段已经过去一半,在周末短暂的休息后,我们将继续完成后续的任务,今日工作情况如下: 小组成员 今日任务 工作时间 李睿琦 网络数据传输应用设计 2 左少辉 主界面功能测试 3 程刚 界面优化学习 4 ...

  7. 第三周:构造一个简单的LINUX系统MENUOS

    吕松鸿 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内 ...

  8. 软件工程课程设计——第一个Spring

    开发会议框架表格: 1.我们团队Reborn针对需求功能进行热烈的讨论会议,从功能的方面分析开发,结合在一起组合为App软件,再另外思考附加的功能性娱乐项目. 2.开发过程中,以表格的形式反思开发过程 ...

  9. Mac用户抓包软件Charles 4.0 破解 以及 抓取Https链接设置

    相信大家曾经都是Window的用户,作为前端哪能没有一款抓包工具,抓包工具可以非常便捷的帮助我们分析接口返回报文数据,快速定位问题. 曾经横扫window用户的Fiddler便是我们的挚爱,然而,作为 ...

  10. 第二章:蓝色巨人 IBM公司

    COBOL(面向商业的通用语言) DEC(数字设备公司)华生实验室 造成失败的原因: 1,没有经营终端消费型产品 2,技术的流失 3.没有在意对手 成为的方法:合并,保守,谨慎 研究员的工作: 1,发 ...