Django的STATIC_URL、STATIC_ROOT、STATICFILES_DIRS、MEDIA_URL、MEDIA_ROOT意义、设置和使用

本文详细介绍了Django中的STATIC_URL、STATIC_ROOT、STATICFILES_DIRS、MEDIA_URL、MEDIA_ROOT的设置和使用,包括它们在开发和部署模式下的不同作用。在部署时,STATIC_ROOT用于收集静态文件,STATICFILES_DIRS用于指定额外的静态文件目录,STATIC_URL作为静态文件的URL前缀。MEDIA_URL和MEDIA_ROOT则与用户上传的媒体文件相关,设置后可以通过URL直接访问。文章还提到了如何在HTML模板中使用这些配置,并提供了项目目录结构的相关信息。
摘要由CSDN通过智能技术生成

以下经验是在Django2.1.1及Python3.5环境下(项目目录结构见结尾

 

1.STATIC_ROOT

首先,要有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的配置,后面会提到)

2.STATICFILES_DIR

对于STATICFILES_DIR,个人有过使用。举例:我在project下设置了一个名为static的文件夹,但不是说你在project下起名为static,Django就可以识别出它是一个静态文件夹,要告诉它,怎么告诉?答:settings中设置STATICFILES_DIR

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

(这句代码如果看不懂,那就没办法了)至于在HTML用这个文件夹,到目前介绍的这两个东西是做不到的

3.STATIC_URL

根据我做了两个半生不熟Django项目的经验,个人认为它是一个代号,对STATIC_ROOT和STATICFILES_DIR的引用,相当于一个别名,具体怎么讲呢?

首先settings.py

STA
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值