Django---静态文件(开发阶段)

本文详细介绍了Django中静态文件的配置项,包括STATIC_URL、STATICFILES_FINDERS、STATICFILES_DIRS、STATIC_ROOT及STATICFILES_STORAGE的作用与使用方法,并通过实例展示了如何定位静态资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Staticfiles settings主要有五个配置
1. STATIC_ROOT
2. STATIC_URL
3. STATICFILES_DIRS
4. STATICFILES_STORAGE
5. STATICFILES_FINDERS

一、首先讲解STATIC_URL

STATIC_URL是对静态文件的引用
设置STATIC_URL = '/mystatic/',访问url为http://127.0.0.1:8000/mystatic/test.js
那么该去哪里搜索test.js文件呢?那么必须要了解STATICFILES_FINDERS, STATICFILES_FINDERS就是告诉我们去哪里查找静态文件

一、STATICFILES_FINDERS

默认值:

[
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
django.contrib.staticfiles.finders.FileSystemFinder:去STATICFILES_DIRS中设置的路径查找静态文件
django.contrib.staticfiles.finders.AppDirectoriesFinder:在app中static目录中查找静态文件
备注:STATICFILES_FINDERS按照list的顺序来查找静态文件

为什么Django这样设计呢?—个人猜想
以下面的为例:在开发过程中,我们一般会把每个app需要的静态文件放在app目录下的static文件夹里面。但是这样会出现一个问题,比如每个app都需要jquery文件,如果都放在每个app下,首先,是重复的工作,其次,后面如果需要统一变更jquery的版本,需要每个app下进行修改,很麻烦。因此增加了STATICFILES_DIRS的配置,把共用的静态文件存放到共用的位置

dj18static
├── blog
│   ├── __init__.py
│   ├── admin.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── static # 应用 blog 下的 static, 默认会找这个文件夹
│   │   └── 【zqxt.png】
│   ├── tests.py
│   │
│   └── views.py
├── common_static # 已经添加到了 STATICFILES_DIRS 的文件夹
│   └── js
│       └── 【jquery.js】
│
├── dj18static
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

二、STATICFILES_DIRS
配置STATICFILES_DIRS

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
)

讲到这里就可以知道本文最开始的问题:http://127.0.0.1:8000/mystatic/test.js去哪里查找静态文件?
根据STATICFILES_FINDERS定义的两个参数
    1. 去STATICFILES_DIRS定义的文件夹中查找,即common_staic目录下查找test.js,找到即退出,不再往下查找
    2. 未找到,就去各个app下的static文件夹中查找test.js

三、STATIC_ROOT

STATIC_ROOT主要是生产阶段的部署,开发阶段暂时不用
python manage.py collectstatic ---> 把app下的static静态文件拷贝到settings.py中设置的STATIC_ROOT文件夹中

四、STATICFILES_STORAGE

用于collectstatic命令情况下,也是生产阶段部署相关的,开发阶段暂时不用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值