Django4全栈进阶之路9 STATIC静态文件路径设置、MEDIA媒体文件路径设置
在 Django 4 中,可以在 settings.py 文件中设置 STATICFILES_DIRS 来指定应用程序静态文件所在的文件夹路径,设置 STATIC_ROOT 来指定收集所有应用程序静态文件的目标文件夹路径。例如:
# settings.py
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
] STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
其中,STATICFILES_DIRS 是一个列表,包含应用程序静态文件所在的文件夹路径,STATIC_ROOT 是一个字符串,指定收集所有应用程序静态文件的目标文件夹路径。
在生产环境中,需要运行 collectstatic 命令来收集所有应用程序静态文件到 STATIC_ROOT 文件夹。可以使用以下命令:
python manage.py collectstatic
对于媒体文件,可以在 settings.py 文件中设置 MEDIA_ROOT 和 MEDIA_URL,如下所示:
# settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
其中,MEDIA_ROOT 指定媒体文件的本地存储路径,MEDIA_URL 指定媒体文件的 URL 前缀。
需要注意的是,在生产环境中,需要配置 Web 服务器(如 Nginx 或 Apache)来提供静态文件和媒体文件的服务,而不是使用 Django 4 提供的服务。在开发环境中,Django 4 会自动提供静态文件和媒体文件的服务。
示例:
# 设置静态资源的保存路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static')
# 设置媒体资源的保存路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
在 Django 4 中,可以在主路由文件(通常是 urls.py)中设置 STATIC 和 MEDIA 路径,以确保能够正确地访问静态文件和媒体文件。
对于静态文件,可以使用以下代码:
# urls.py
from django.conf import settings
from django.conf.urls.static import static urlpatterns = [
# ... 其他 URL 模式 ...
] # 只在开发环境中使用,生产环境需要通过 Web 服务器提供静态文件服务
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
这段代码使用了 static() 函数来将静态文件路径和 URL 绑定在一起,settings.STATIC_URL 是静态文件 URL 的前缀,settings.STATIC_ROOT 是静态文件的本地存储路径。
对于媒体文件,可以使用以下代码:
# urls.py
from django.conf import settings
from django.conf.urls.static import static urlpatterns = [
# ... 其他 URL 模式 ...
] # 只在开发环境中使用,生产环境需要通过 Web 服务器提供媒体文件服务
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这段代码使用了 static() 函数来将媒体文件路径和 URL 绑定在一起,settings.MEDIA_URL 是媒体文件 URL 的前缀,`settings.MEDIA_ROOT` 是媒体文件的本地存储路径。
需要注意的是,以上代码中的 if settings.DEBUG 是一个条件语句,只有在开发环境中才需要使用。在生产环境中,通常会使用 Web 服务器(如 Apache 或 Nginx)来提供静态文件和媒体文件的服务,而不是让 Django 直接提供。
因此,如果您的 Django 应用程序将在生产环境中运行,您需要在 Web 服务器配置中设置静态文件和媒体文件的路径,而不是在 Django 项目中进行设置。
BootStrap:
BootStrap官网:https://www.bootcss.com/
本次使用Bootstrap 4.6.2版本
要在 Django 中使用 Bootstrap 4.6 的静态文件,可以按照以下步骤操作:
2、首先,将 Bootstrap 4.6 的 CSS 和 JavaScript 文件下载到您的 Django 项目中的某个静态文件目录中,例如 static 文件夹下的 css 和 js 文件夹中。这里我们直接将整个文件拷贝到static.

2、然后,在 base.html 模板文件中,通过以下方式引用 Bootstrap 的 CSS 和 JavaScript 文件:
{% load static %}
<!-- 引入 Bootstrap 的 CSS 文件 -->
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
<!-- 在页面底部引入 jQuery 和 Bootstrap 的 JavaScript 文件 -->
<script src="{% static 'js/jquery.min.js' %}"></script>
<script src="{% static 'js/bootstrap.min.js' %}"></script>
这里,我们使用 Django 内置的 {% static %} 模板标签来生成静态文件的 URL,这个标签会根据您在 settings.py 中设置的静态文件路径来生成 URL。
Bootstrap 4.6还依赖jquery.min.js吗?
是的,Bootstrap 4.6 仍然依赖 jQuery。在使用 Bootstrap 4.6 的 JavaScript 组件之前,您需要先引入 jQuery。
在您的 Django 项目中,您可以在 static 文件夹中的 js 文件夹中,将 jQuery 的 JavaScript 文件下载到本地。然后,在您的模板文件中,可以按照以下方式引入 jQuery 和 Bootstrap 的 JavaScript 文件:
{% load static %}
<!-- 引入 jQuery 的 JavaScript 文件 -->
<script src="{% static 'js/jquery.min.js' %}"></script>
<!-- 引入 Bootstrap 的 JavaScript 文件 -->
<script src="{% static 'js/bootstrap.min.js' %}"></script>
注意,jQuery 必须在 Bootstrap 的 JavaScript 文件之前被引入,因为 Bootstrap 的 JavaScript 代码依赖于 jQuery。
希望这个回答能够帮助您理解 Bootstrap 4.6 仍然依赖于 jQuery。
Bootstrap 4.6 兼容 jQuery 3.x 版本,您可以从 jQuery 官网(https://jquery.com/)下载最新的 jQuery 3.x 版本。
在下载页面上,您可以找到“Download”按钮,然后选择需要的版本进行下载。推荐下载 jQuery 3.6.x 版本,这是目前的最新稳定版本。
如果您想下载压缩版本的 jQuery,可以选择下载“Production version”,如果您想下载未压缩版本的 jQuery,可以选择下载“Development version”。
以下是 jQuery 3.6.0 压缩版和未压缩版的下载链接:
希望这个回答能够帮助您找到适合 Bootstrap 4.6 的 jQuery 版本,并提供相应的下载链接。
Django4全栈进阶之路9 STATIC静态文件路径设置、MEDIA媒体文件路径设置的更多相关文章
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- web前端全栈学习之路
web前端全栈学习之路 --- 陆续更新中 一.HTML相关 1.HTML常用标签:http://www.cnblogs.com/wyb666/p/8733699.html 2.HTML5基础: 3. ...
- 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦
你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦
- C#.Net全栈工程师之路-学习路径
C#.Net全栈工程师之路-学习路径 按架构分: C/S架构: B/S架构: Mobile移动开发: 按技术点分: C#编程基础以及OOP面向对象编程: 数据库基础以及高级应用(MYSQL+MSSQL ...
- 战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- Python全栈开发之路 【第四篇】:Python基础之函数
本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...
- Python全栈开发之路 【第一篇】:Python 介绍
本节内容 一.Python介绍 python的创始人为荷兰人——吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
- Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)
本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
- Python全栈开发之路 【第五篇】:Python基础之函数进阶(装饰器、生成器&迭代器)
本节内容 一.名称空间 又名name space,就是存放名字的地方.举例说明,若变量x=1,1存放于内存中,那名字x存放在哪里呢?名称空间正是存放名字x与1绑定关系的地方. 名称空间共3种,分别如下 ...
随机推荐
- 嵌入式数据库 sqllite & h2 utils
使用场景: 简单脚本,但是有需要数据记录. (使用前升级下版本) 我的使用: 老机器,老项目,jkd6, 需要记录 SqlLiteUtils package com.sea.edi.listener ...
- 【Mybatis-Plus】使用updateById()、update()将字段更新为null或者空
参考 https://blog.csdn.net/weixin_41544866/article/details/119738605
- SSRF Server-Side Request Forgery(服务器端请求伪造)
什么是SSRF? 犹如其名,SSRF(Server-Side Request Forgery)服务端请求伪造,攻击者可以控制服务器返回的页面,借用服务器的权限访问无权限的页面. 这是一个允许恶意用户导 ...
- 后疫情时代,RTE“沉浸式”体验还能这么玩?丨RTE 2022 编程挑战赛赛后专访
前言 9 月 17 日,由声网.环信与 RTE 开发者社区联合主办的"RTE 2022 编程挑战赛"圆满落幕.从 300+ 支参赛队伍中冲出重围的 27 支决赛队伍,在元宇宙中用精 ...
- Spring框架中都用到了哪些设计模式 ?
1.简单工厂模式 简单工厂模式的本质就是一个工厂类根据传入的参数,动态的决定实例化哪个类.Spring 中的 BeanFactory 就是简单工厂模式的体现,根据传入一个唯一的标识来获得 bean 对 ...
- RSA 简介及 C# 和 js 实现【加密知多少系列】
〇.简介 谈及 RSA 加密算法,我们就需要先了解下这两个专业名词,对称加密和非对称加密. 对称加密:在同一密钥的加持下,发送方将未加密的原文,通过算法加密成密文:相对的接收方通过算法将密文解密出来原 ...
- 大数据面试——HDFS
一.Hadoop1.0 与 Hadoop2.0的区别
- python---滚动条操作
""" 1.让元素滚动到可见区域后,再操作.(大部分的网页自己会滚,直接找元素---下一页) drive.find_element("id",&quo ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——1.2 GrapeOS真机演示
学习操作系统原理最好的方法是自己写一个简单的操作系统. GrapeOS操作系统之前一直运行在模拟器和虚拟机中,今天我们来演示一下GrapeOS在真机上运行的情况. 一.物理机真机 今天演示用的真机是一 ...
- 【题解】Luogu P2671 【求和】
因为人傻常数大写了一天的题目. 原题传送门 题目意思另一种表达: 定义特殊二元组\((x,z)\). 1.\(x<z\). 2.\(x\)与\(z\)要么都为奇数要么都为偶数. (即\(x \ ...