3-静态文件
静态文件
模板文件:我们将
html
文件都默认放在templates
这个文件夹下,这个文件夹一般在项目根目录新建即可静态文件:我们将网站所使用的静态文件默认都放在
static
文件夹下
静态文件配置
STATIC_URL = '/static/' # 类似于访问静态文件的令牌
# 添加下面的这段代码即可
# 静态文件配置
# 默认查找位置是当前APP的目录下
# 这个配置定义了静态文件应用在启用 FileSystemFinder 查找器时将穿越的额外位置
# 方式1:
# 需要先导入os模块
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
# 这里可以继续加别的路径地址,这里就算为每一个单独的APP添加路径,添加之后一样可以使用模板语法
]
# 方式2:
# 不需要导入模块,因为django已经导入过pathlib模块了
STATICFILES_DIRS = [BASE_DIR / 'static']
前端配置
在
html
页面最顶部添加{% load static %}
,告诉Django
模板引擎要在模板中使用静态文件;这样,便可以使用static
模板标签引入静态目录中的文件
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>下面是一张很好看的图片</p>
<img src="{% static 'img/hero.png' %}" alt="这是一张英雄的图片">
</body>
</html>
media文件夹
# 手动在根目录下创建media文件夹
MEDIA_URL = '/media/'
# 手动配置路径
MEDIA_ROOT = BASE_DIR / 'media'
# 上面两个都需要创建
'''
在 Django 中配置 media 路由通常是为了在开发环境中提供用户上传的媒体文件的访问。
在生产环境中,通常不直接由 Django 处理媒体文件的服务,而是由 Web 服务器(如 Nginx 或 Apache)来处理。
'''
# 主路由urls.py
# 路由配置固定的写法
from django.urls import re_path
from django.views.static import serve
from django.conf import settings
urlpatterns = [
# 配置media文件夹 老方法
re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT})
# 省略其它路由
# 注意!!!! 一定要配在其它路由前面!!!
# 一定要陪在项目同名的路由urls下面!! 配置在创建的app的urls下面 无效!!!!
# 新方法 推荐!
path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
]
配置静态方式2 (推荐)
# settings中
# 静态文件
STATIC_URL = "static/"
STATIC_ROOT = "static/"
# ----------------- 静态media文件夹 -------------------#
MEDIA_URL = "media/"
MEDIA_ROOT = BASE_DIR / 'media'
# 记得再项目的根目录下新建static以及media文件夹
# 路由层中
# 导入模块 配置静态目录
from django.contrib.staticfiles.urls import staticfiles_urlpatterns, static
from . import settings
urlpatterns = [
# ...
]
# 配置static的
urlpatterns += staticfiles_urlpatterns()
# 配置media的
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# 完成
# http://127.0.0.1:8000/media/img/backend-logo.jpg
media文件夹和static文件夹区别
在 Django 中,media
文件夹和 static
文件夹都用于存储静态文件,但它们的用途和管理方式有所不同。
1. Media 文件夹:
media
文件夹用于存储用户上传的媒体文件,例如图片、视频、音频等。这些文件通常是动态生成的,由用户上传到应用程序中,或者由应用程序生成并保存在服务器上。
在 Django 中配置 media
文件夹时,你需要在 settings.py
文件中设置 MEDIA_ROOT
和 MEDIA_URL
。
MEDIA_ROOT
定义了媒体文件在服务器上的存储路径。MEDIA_URL
定义了媒体文件在浏览器中的访问路径。
配置示例:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
2. Static 文件夹:
static
文件夹用于存储应用程序中的静态文件,例如 CSS、JavaScript、图像等。这些文件通常是在开发阶段就存在的,不会根据用户上传或应用程序的运行而改变。
在 Django 中配置 static
文件夹时,你需要在 settings.py
文件中设置 STATIC_ROOT
、STATIC_URL
和 STATICFILES_DIRS
。
STATIC_ROOT
定义了静态文件在服务器上的收集路径,用于生产环境中,用于收集静态文件。STATIC_URL
定义了静态文件在浏览器中的访问路径。STATICFILES_DIRS
定义了额外的静态文件路径,Django 会在这些路径中查找静态文件。
配置示例:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
注意事项:
- 在开发阶段,
STATICFILES_DIRS
中定义的路径用于查找静态文件,而在生产环境中,静态文件应该被收集到STATIC_ROOT
中,并由 Web 服务器(如 Nginx 或 Apache)提供服务。 media
文件夹用于存储用户上传的文件,因此需要配置相应的 URL 和路径。而static
文件夹存储的是应用程序的静态文件,因此也需要相应的配置。- 在模板中使用静态文件时,可以使用
{% static %}
模板标签来引用静态文件,例如{% static 'css/styles.css' %}
。而在视图中,可以使用django.contrib.staticfiles.finders.find
函数来查找静态文件的路径。