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

本文详细介绍了如何在Django项目中正确配置和使用静态资源,包括图片、CSS和JavaScript等文件。通过设置STATIC_URL和STATICFILES_DIRS,可以实现静态资源的有效管理和加载。

因为你现在的是相对路径,应该是:

href="/static/bootstrap.min.css"

一般会用{{ STATIC_URL }}/xx.xx 或者 {% static 'xx.xx' %}在模板中表示。
里面的static还有url是在其他地方设置的变量,和后面的字段’XX.xx’共同组成一个链接。
href="{% static 'css/semantic.css' %}"
要看文档!

使用Django静态设置时,遇到很多问题,经过艰苦的Baidu, stack overflow, Django原档阅读,终于把静态图片给搞出来了。特记录下来。

关键的概念:Django中,静态资源的存放通过设置 STATIC_URL, STATICFILES_DIRS 来设置,一般STATIC_URL设置为:/static/

STATIC_URL=’/static/’, 这个static 是在Django 具体APP下建立的static目录,用来存放静态资源。而STATICFILES_DIRS一般用来设置通用的静态资源,对应的目录不放在APP下,而是放在Project下,例如:

STATICFILES_DIRS=(os.path.join(BASE_DIR, “common_static”),)

具体在模板文件中访问的时候,都是统一用:/static/资源名的方式,就可以访问到资源,不论具体的目录是APP下的static,还是project下的common_static, 都可以用/static/资源名的方式访问到。

为增强可移植性,在模板中可以用:STATIC_URL来代替具体的/static/来设置资源路径,但是需要在settings.py中2个地方进行设置,否则会发生取不到资源的错误:

1. INSTALLED_APPS 中,加入 ‘django.contrib.staticfiles’

2. TEMPLATES 中,context_processors中,加入django.template.context_processors.static

模板中调用时:

<img src=”{{STATIC_URL}}pic.jpg ” />

### Django 中 `STATIC_URL` `STATICFILES_DIRS` 的配置说明及区别 #### 配置说明 #### STATIC_URL 设置 `STATIC_URL` 指定了在开发生产环境中访问静态文件的URL前缀。每当在模板中使用 `{% static 'path/to/file' %}` 时,Django 将此路径与 `STATIC_URL` 组合,从而生成完整的 URL[^1]。 例如,在 settings.py 文件中的定义可以是: ```python STATIC_URL = '/static/' ``` 这意味着任何通过 `{% static %}` 标签引用的资源都会被映射到 `/static/` 下面的位置。 对于 HTML 页面来说,如果有一个图片位于项目的某个位置,并且想要链接它,则可以在模板里这样写: ```html <img src="{% static 'images/myphoto.jpg' %}" alt="My Photo"> ``` 这最终会被解析成类似于 `<img src="/static/images/myphoto.jpg" />`. #### STATICFILES_DIRS 设置 另一方面,`STATICFILES_DIRS` 提供了一个列表来指定额外查找静态文件的地方。默认情况下,应用程序内部名为 `static` 的子目录也会被纳入考虑范围之内;但是有时候可能希望集中管理多个应用共有的静态资产或者放置一些不属于任何一个特定应用但仍然需要服务给客户端浏览器查看的内容。这时就可以利用 `STATICFILES_DIRS` 来扩展这些源目录[^2]。 一个典型的例子是在 settings.py 中添加如下代码片段: ```python import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent STATICFILES_DIRS = [ BASE_DIR / "common_static", ] ``` 上述设置意味着除了各个 app 自带的 `static` 文件夹外,还会从根目录下的 `common_static` 文件夹收集静态文件。 #### 主要区别 - **目的不同**: `STATIC_URL` 关注的是如何构建对外提供下载使用的 URI 路径模式,而 `STATICFILES_DIRS` 则关心本地磁盘上哪些地方存有应该被打包并上传至 CDN 或者其他远程存储系统的实际物理文件。 - **应用场景差异**: 开发阶段通常只需要调整好 `STATIC_URL`, 让开发者能够方便快捷地测试样式表、JavaScript 库等功能即可。然而到了部署环节,就需要认真规划 `STATICFILES_DIRS` ,以便于自动化工具如 `collectstatic` 命令能顺利找到所有待发布的素材并将它们复制到由 `STATIC_ROOT` 指定的目标位置[^4].
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值