赞
踩
首先,要有Django的开发模式和部署模式的概念(目前知道有这种东西就行,我也没用过,或者用过不知道)。
通常情况下我们是在开发模式下(Debug=True),我们可以创建project,project下放着我们建立的app。如果此时,你的static静态文件夹是放在app目录下,那么开发模式下,Django将会自动查找每个app下的静态文件并在网页中显示。(但我自己再做Django项目的时候,我的static文件是放置在了project目录下,所以我没有对这个解释进行验证)
在部署模式下,我们需要运行python manage.py collectstatic这个命令(在manage.py同级目录下运行),这个命令会把每个app目录下的文件copy到STATIC_ROOT这个文件夹下。此时为部署模式(Debug=False),如果想要通过http://127.0.0.1/static/***访问,将不会访问各个app下的static,而是STATIC_ROOT中所指定的文件夹(当然想要通过url访问,这里还少了对static_url的配置,后面会提到)
对于STATICFILES_DIR,个人有过使用。举例:我在project下设置了一个名为static的文件夹,但不是说你在project下起名为static,Django就可以识别出它是一个静态文件夹,要告诉它,怎么告诉?答:settings中设置STATICFILES_DIR
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
(这句代码如果看不懂,那就没办法了)至于在HTML用这个文件夹,到目前介绍的这两个东西是做不到的
根据我做了两个半生不熟Django项目的经验,个人认为它是一个代号,对STATIC_ROOT和STATICFILES_DIR的引用,相当于一个别名,具体怎么讲呢?
首先settings.py
STATIC_URL = '/static/' #这个static纯属碰巧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。