在本教程中,我们将探讨Django中的静态文件是什么,高效管理它们的好处,它们在Web应用程序中的作用,并设置一个演示项目,以说明如何使用不同的方法和工具来管理和提供静态文件。
Django 是一个高级Python Web开发框架,为Web开发者提供了一套强大的工具集,以快速且高效地创建Web应用程序。
尽管Django非常适合快速高效地创建Web应用程序,但同样重要的是要关注你所开发的Web应用程序的外观和感觉。为此,你需要学习如何管理支持并提供应用程序外观和感觉的资源。
Django中的静态文件
在Django中,静态文件是指那些未经服务器处理直接提供给客户端的文件。
这些通常包括CSS、JavaScript文件、图片、图标、字体以及其他对Web应用程序外观和感觉至关重要的资产。
Django提供了高效管理和提供这些静态文件的机制,确保用户体验流畅。
高效管理静态文件
为了确保Web应用程序的用户拥有良好的用户体验并且应用程序按预期运行,你必须高效地管理静态文件。
合理组织和缓存静态文件将确保快速加载页面,提高响应性,从而增强整体用户满意度。
Django提供了多种工具和约定来辅助处理静态文件。
Web应用程序中静态文件的作用
静态文件非常重要,因为它们决定了Web应用程序的外观和感觉。它们定义了应用程序组件的样式、它们对用户交互的响应方式,以及用户访问特定Web应用程序时所看到的内容。
高效地提供静态文件,能够构建出视觉吸引且响应迅速的用户界面,从而使应用程序更具吸引力和用户友好性。
搭建演示项目
为阐释Django中静态文件管理的概念,我们将从零开始搭建一个演示项目。
该项目将涉及创建Django项目、配置静态文件设置以及将静态文件整合到简单的网页应用中。
通过跟随演示项目,你将获得在Django中管理静态文件的实践经验,并理解它们在网页开发中的重要性。
本教程中,我们将创建一个着陆页,当用户访问我们项目的主页时,会看到一个样式化的标题欢迎他们来到网站。同时,页面还将通过JavaScript显示当天的日期,并展示一张图片以完善页面。
创建项目目录
首先,使用以下命令创建一个存放演示项目的目录:
mkdir sitepoint_django_static_tut
创建虚拟环境
建议你在虚拟环境中隔离新建项目。这意味着每个项目都有自己的依赖,不会影响全局的Python安装。
我们将使用virtualenv
包来创建它。如果您的开发环境中尚未安装此包,请使用pip install virtualenv
进行安装,并使用以下命令创建虚拟环境:
virtualenv myenv
上述命令将创建一个名为myenv
的虚拟环境。要使用此虚拟环境,您必须激活它:
Linux/macOS:
. myenv/bin/activate
Windows:
. myenv\Scripts\activate
安装依赖项
一旦虚拟环境激活,您现在可以继续安装项目的依赖项。首先,我们将安装Django。随着我们进入演示其使用方法的章节,我们将安装其他依赖项:
pip install Django
这将安装撰写本文时最新的稳定版Django,即版本5.0。
创建Django项目
成功安装Django后,您现在可以使用Django管理命令。让我们在虚拟环境中使用这些命令创建一个Django项目:
django-admin startproject sitepoint_django .
上述命令将创建一个名为sitepoint_django
的Django项目,末尾的点表示我们打算在当前目录中创建该项目。
创建演示应用
为了说明静态文件管理的各种概念,我们需要在项目中至少创建一个Django应用:
python manage.py startapp static_demo
这将在我们的项目中创建一个名为static_demo
的新应用。为了让项目识别此应用,我们需要在项目的settings.py
文件中的INSTALLED_APPS
设置中添加它。打开sitepoint_django/settings.py
,找到INSTALLED_APPS
设置,并在列表底部添加static_demo.apps.StaticDemoConfig
,如下所示:
# sitepoint_django/settings.py
INSTALLED_APPS = [
# 其他应用
'static_demo.apps.StaticDemoConfig',
]
创建主页模板
我们将在用户访问网站主页时渲染一些HTML。在static_demo
应用中,创建一个templates
目录,并在其中再创建一个目录并命名为static_demo
。在这个目录中,创建一个模板并命名为index.html
,路径将是static_demo/templates/static_demo/index.html
。
将以下代码放入index.html
:
<!-- static_demo/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sitepoint Django Tutorial</title>
</head>
<body>
<h2>Hello there, welcome to our great site!</h2>
</body>
</html>
创建索引视图
为了让模板在用户每次访问应用主页时显示,我们需要创建一个视图函数,该函数将被触发以渲染home.html
模板。打开static_demo/views.py
文件并输入以下代码:
# static_demo/views.py
from django.shortcuts import render
def index(request):
return render(request, "static_demo/home.html")
创建static_demo URL文件
我们希望在static_demo
应用中的索引视图能够在用户访问我们的网站时渲染主页。为此,我们需要为该视图函数创建一个URL模式。首先,我们需要为static_demo
应用创建一个urls.py
文件,然后将static_demo
的URL文件连接到项目的URL文件上。
因此,在static_demo
应用中,创建一个文件并命名为urls.py
,并向其中添加以下代码:
# static_demo/urls.py
from django.urls import path
from .import views
app_name = 'static_demo'
urlpatterns = [
path('', views.index, name="index"),
]
上述代码为项目的索引视图创建了一个URL,因此,如果用户访问类似http://oursite.com/
的地址,或者在开发环境中访问http://127.0.0.1:8000
,索引视图将被调用以响应请求。
接下来,将其添加到项目URL文件中。打开sitepoint_django/urls.py
文件,并添加以下代码:
# sitepoint_django/urls.py
from django.contrib import admin
from django.urls import path, include
# 添加include的导入
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('static_demo.urls')),
# 添加此行
]
上述代码对默认的urls.py
文件进行了一些更改。我们添加了include
函数的导入,这告诉Django我们正在包含static_demo.urls
。
测试项目
至此,项目的初始配置已完成。让我们运行开发服务器,看看一切是否都已妥善连接。
使用以下命令运行项目:
python manage.py runserver
如果一切设置正确,你应该能够访问http://127.0.0.1:8000
。你将看到一些未加样式的文本,欢迎你访问该网站。
开发环境中静态文件的服务
为了给页面添加样式、日期显示的JavaScript以及图片,我们需要对项目进行更改。让我们逐步进行,并了解如何在不同的开发环境中以不同方式提供这些不同的静态文件。
设置静态文件目录
Django建议所有静态资产都应按应用进行管理:即,特定应用所需的所有CSS、JS和图像应位于该应用的范围内。因此,让我们更新static_demo
应用,并创建一个名为static
的目录,在其中再创建一个名为static_demo
的目录。然后在static_demo
目录中创建另外三个目录:css
、js
和images
。最终,我们将得到如下结构:
static_demo/
└── static/
└── static_demo/
├── css/
├── js/
└── images/
在static
目录中创建static_demo
目录的原因是为了帮助你命名空间化你的静态资产。如果你有多个应用,并且两个应用中的CSS都命名为styles.css
,Django只会处理它找到的第一个样式表,因为它无法区分其他样式表。因此,我们通过命名空间来让Django知道我们在模板中引用的是哪个资产文件。
创建静态文件
在这一步中,我们将设置最基本的静态资源,以展示如何在开发环境中提供这些文件。
在js
目录下,创建一个文件并命名为todays_date.js
,添加以下代码:
/* static_demo/js/todays_date.js */
let formattedDate = new Date().toLocaleDateString();
document.getElementById('todaysDate').innerText = `The date today is ${formattedDate}`;
上述代码通过JavaScript获取当前日期,将其格式化为字符串,并在一个ID为todaysDate
的div中显示。
在css
目录下,创建一个文件,命名为styles.css
,添加以下代码:
/* static_demo/css/styles.css */
body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin: 0;
}
h2 {
font-size: 24px;
color: green;
}
上述代码使用Flexbox布局将页面上的所有项目水平和垂直居中。同时,将H2元素的字体大小设置为24px,颜色设置为绿色。
对于图片,您可以使用任何喜欢的图片。只需将某张图片复制到images
目录下,并记住其名称。
配置静态文件设置
要在开发中提供静态文件,需要在Django的settings.py
文件中设置多个选项。打开sitepoint_django/settings.py
文件,检查是否包含以下设置:
# sitepoint_django/settings.py
DEBUG=True
在开发过程中,通常建议在Django项目设置中将DEBUG
设置为True
。这一设置会启用多种调试功能,包括详细的错误信息和堆栈跟踪,这对开发期间诊断和修复问题极为重要。
此外,当DEBUG
设为True
时,django.contrib.staticfiles
应用会自动从每个应用的static
目录提供静态文件。这种行为简化了开发流程,无需手动配置即可提供静态文件。
在INSTALLED_APPS
设置中,检查是否已添加django.contrib.staticfiles
。如果没有,请将其添加到项目中已有的应用之上。例如,在本项目中,将其添加在static_demo
应用字符串之上,如下所示:
# sitepoint_django/settings.py
INSTALLED_APPS = [
'django.contrib.staticfiles',
'static_demo.apps.StaticDemoConfig',
]
Django提供的django.contrib.staticfiles
应用对于开发期间提供静态文件至关重要。默认情况下,它会遍历项目中的应用,以定位每个应用内的静态文件目录。然而,如果你有与特定应用无关的其他静态资源,你仍然可以通过在项目的settings.py
文件中设置STATICFILES_DIRS
来使django.contrib.staticfiles
访问这些资源。此设置允许你指定静态文件所在的额外目录。例如:
# sitepoint_django/settings.py
STATICFILES_DIRS = [
"/dir/with/staticfiles/static",
"/someother/dir/static",
"/home/example.com/static",
]
除了DEBUG
和STATICFILES_DIRS
之外,Django项目设置文件中另一个重要的设置是STATIC_URL
。虽然Django为STATIC_URL
提供了默认值,但如果该设置尚未定义,你可以在settings.py
文件中明确指定。
STATIC_URL
设置指定了静态资源将被服务的基准URL。例如,设置STATIC_URL = "static/"
指示Django从/static/
URL路径提供静态资源。这意味着,例如,位于static_demo
应用中的样式文件将可通过类似http://127.0.0.1:8000/static/static_demo/css/styles.css
的URL访问。
更新模板
设置处理完毕后,要在模板中使用静态文件,我们需要用以下HTML更新它:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sitepoint Django Tutorial</title>
<link rel="stylesheet" href="{% static 'static_demo/css/styles.css'%}">
</head>
<body>
<h2>Hello there, welcome to our great site</h2>
<p id="todaysDate"></p>
<img src="{% static 'static_demo/images/flowerImage.png' %}" alt="Flower Image">
<script src="{% static 'static_demo/js/todays_date.js' %}"></script>
</body>
</html>
模板更新引入了新的标签:{% load static %}
。此标签加载了由Django模板引擎提供的静态文件处理功能。在Django模板文件中包含此标签,使我们能够使用与静态文件相关的模板标签和过滤器。
例如,在我们的模板中使用它,可以让我们在HTML元素中引用静态文件,如图片、CSS和JS。使用它还能让Django为这些静态资产生成URL:
<link rel="stylesheet" href="{% static 'static_demo/css/styles.css'%}">
<img src="{% static 'static_demo/images/flowerImage.png' %}" alt="Flower Image">
<script src="{% static 'static_demo/js/todays_date.js' %}"></script>
完成这些设置并更新模板后,我们应该运行项目,检查开发环境下文件是否被正确提供。使用以下命令启动项目:
python manage.py runserver
如果一切设置无误,开发服务器应该在http://127.0.0.1:8000
运行。访问该链接,页面应与下图相似:
出现类似图像表明静态文件已正确应用。
需要注意的是,在Django开发中,当项目设置中DEBUG=True
,且启用了django.contrib.staticfiles
时,Django的开发服务器(runserver
)会提供静态文件服务。在此情况下,对CSS、JavaScript或图像等静态文件的任何更改都会被Django自动检测并应用。这一无缝过程极大地简化了开发工作,因为你可以即时看到更改的效果,无需手动刷新或重启服务器。
然而,在生产环境中,通常需要使用单独的Web服务器或CDN来提供静态文件。在这种情况下,Django可能无法自动检测并应用对静态文件的更改,这需要手动干预以确保用户能够获取到更新后的文件。此外,如果您选择使用其他方法(如django.views.static.serve()
视图)手动提供静态文件,自动检测和应用更改可能不会发生,您可能需要实现自己的机制来处理静态文件的更新。
使用WhiteNoise提供静态文件
在开发过程中,django.contrib.staticfiles
简化了提供静态资产的过程,确保在您进行更改时能够无缝更新。
然而,当过渡到生产环境时,必须禁用像DEBUG=True
这样的设置,并且静态文件可能从CDN或其他服务器提供。这就需要一个解决方案,它既能满足开发环境中的文件平滑提供,又能准确反映生产环境。
WhiteNoise包应运而生。设计与Django无缝集成,WhiteNoise为开发和生产环境提供了一个强大的静态文件提供解决方案,确保在部署阶段的一致性和可靠性。让我们来探索WhiteNoise。
在Django中安装和配置WhiteNoise
开始使用WhiteNoise非常简单。在本节中,我们将引导您完成安装过程,并指导您如何在Django项目中配置WhiteNoise。
我们这样安装WhiteNoise:
pip install whitenoise
安装成功后,前往sitepoint_django/settings.py
文件,滚动至底部,找到STATIC_URL
设置。在其下方添加STATIC_ROOT
设置:
# sitepoint_django/settings.py
STATIC_ROOT = BASEDIR / "staticfiles"
上述设置指示Django,当运行collectstatic
命令时,项目中所有应用的静态资产将被收集并存储到名为staticfiles
的目录中。
接下来,需要执行collectstatic
管理命令:
python manage.py collectstatic
为启用WhiteNoise,需将其添加到MIDDLEWARE
设置列表中,编辑settings.py
文件,在Django的SecurityMiddleware
之后、其他所有中间件之前添加WhiteNoise中间件:
# sitepoint_django/settings.py
MIDDLEWARE = [
# ...
"django.middleware.security.SecurityMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware",
# ...
]
在开发中使用WhiteNoise
通过上述步骤,WhiteNoise能在生产环境中为你服务静态文件。但此时若运行项目,Django开发服务器会自动接管静态文件处理。为在开发和生产中获得类似行为,建议在开发中也使用它来服务文件。
为此,我们将禁用Django的静态文件处理功能,并通过简单编辑设置文件让WhiteNoise接管。只需在INSTALLED_APPS
列表中将WhiteNoise添加到django.contrib.staticfiles
之上即可:
# sitepoint_django/settings.py
INSTALLED_APPS = [
# ...
"whitenoise.runserver_nostatic",
"django.contrib.staticfiles",
# ...
]
此外,还需通过设置DEBUG
为False
来禁用调试模式:
# sitepoint_django/settings.py
DEBUG=False
完成这些步骤后,你就能无缝地使用WhiteNoise包来提供静态资产服务了。
为验证WhiteNoise是否确实在提供文件服务,你可以从INSTALLED_APPS
设置列表中移除或注释掉django.contrib.staticfiles
选项。但需要注意的是,移除django.contrib.staticfiles
将使得一些静态文件管理命令无法使用,例如collectstatic
命令。这个命令对于在生产环境中收集并整合来自应用的静态文件到一个目录中以便高效服务至关重要。
WhiteNoise的高级配置选项
尽管上述步骤足以应对大多数情况,但WhiteNoise还提供了一些额外的配置选项。例如,您可以为项目添加压缩和缓存支持。要启用这些功能,请打开sitepoint_django/settings.py
文件,并添加以下设置:
# sitepoint_django/settings.py
STORAGES = {
# ...
"staticfiles": {
"BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
},
}
上述设置将确保WhiteNoise对静态文件进行压缩和哈希处理,生成唯一文件名,从而安全地进行缓存。
在共享主机环境中使用WhiteNoise
共享主机是一种网络托管服务,其中多个网站托管在单一物理服务器上。在这种设置中,磁盘空间、带宽和处理能力等资源在多个用户之间共享,使其成为托管中小型网站的经济有效选择。
共享主机环境通常由托管提供商管理,他们负责服务器维护、安全和提供技术支持,让网站所有者能够专注于构建和管理他们的网站,而无需担心服务器管理任务。
共享主机中管理静态文件的挑战
虽然共享主机为许多网站提供了经济便捷的托管解决方案,但它相比虚拟私有服务器(VPS)或专用服务器等其他类型的托管服务也存在一些限制。这些限制包括:
-
限制服务器配置和设置,限制了自定义服务器软件或安装额外工具的能力。
-
资源约束如磁盘空间也起作用,可能存在对向访问者提供这些文件所能使用的带宽量的限制。
-
共享主机中性能可能是另一个挑战,因为与其他用户共享资源可能导致静态文件加载时间变慢,特别是在流量高峰期或资源利用率高时。
配置使用WhiteNoise
WhiteNoise是一个Python包,与Django无缝集成,使其成为共享主机环境中提供静态文件的理想选择。与可能不允许在某些托管环境中安装的Apache
和Nginx
等其他软件不同,WhiteNoise可以轻松安装在您的其他项目包旁边。
通过配置Django使用WhiteNoise,您可以高效地直接从Django应用提供静态文件,无需额外的服务器软件。这简化了设置过程,并确保与广泛的托管服务提供商兼容。
大多数共享托管提供商都提供了一个cPanel,允许您进行服务器配置和文件上传。因此,一旦上传了文件,您可以对项目中的settings.py
文件进行以下更改:
# sitepoint_django/settings.py
STATIC_URL='static/'
# 将username替换为您的cpanel用户名
# 如果您正在处理主域,如https://example.com,请使用public_html
STATIC_ROOT='/home/username/public_html/static'
# 或者
# 如果您正在处理子域,如https://subdomain.example.com,请使用文件夹名
STATIC_ROOT='/home/username/subdomain.mydomain.com/static'
设置好这些后,您只需运行collectstatic
命令,您的静态文件就会被收集到上述任一STATIC_ROOT
目录中,具体取决于域名。
从AWS S3提供静态文件
亚马逊简单存储服务(S3)是亚马逊网络服务(AWS)提供的一种可扩展对象存储服务。它允许用户创建称为存储桶的存储空间,您可以在其中存储各种数据,如文档、图像、视频,以及我们教程中提到的静态文件。
AWS提供了一系列服务的免费套餐,包括Amazon S3。免费套餐允许用户在特定时间内或达到特定使用限制前,免费开始使用AWS服务。要开始使用,您可以注册S3免费套餐。但是,为了完成注册过程,您需要提供支付信息。
创建S3存储桶
要创建存储桶,请前往S3控制面板并点击创建存储桶按钮。
为存储桶提供一个唯一的DNS兼容名称。您可以选择一个离您或您的用户更近的区域。
启用存储桶的ACL(访问控制列表)。
通过关闭阻止所有公共访问来启用存储桶的公共访问。
创建成功后,您应该能在S3主页上看到您的存储桶。
启用IAM访问
创建存储桶后,您可以使用根用户访问,但AWS建议您创建一个IAM(身份访问管理)用户组,并仅授予他们对特定存储桶的访问权限。
创建IAM组
前往IAM主页,在侧边栏选择用户组,然后点击创建组按钮。为组命名。
然后在附加权限策略下,搜索S3并分配AmazonS3FullAccess
,点击创建组按钮。
创建IAM用户
在IAM页面中,左侧面板选择用户,然后点击创建用户按钮。
为用户分配一个名称,并点击下一步按钮。
在设置权限选项下,保持将用户添加到组为选中状态,然后转到用户组,选择之前创建的用户组,接着点击下一步按钮。
审查信息后,点击创建用户。
现在点击用户名查看用户详情。点击安全凭证标签,然后点击创建访问密钥。选择本地代码,并点击下一步按钮。
之后,点击创建访问密钥按钮。你可以将密钥复制到你的.env
文件中,或者下载CSV文件以备后用。
配置Django使用AWS S3存储静态文件
创建S3存储桶后,我们需要配置项目以从S3提供文件。在上一节中,我们配置了WhiteNoise来提供静态资产。我们需要禁用WhiteNoise,以便能从S3提供资产。为此,请前往sitepoint_django/settings.py
文件,并注释掉相关代码行:
# sitepoint_django/settings.py
INSTALLED_APPS = [
# ...
# "whitenoise.runserver_nostatic",
# ...
]
MIDDLEWARE = [
# ...
# "whitenoise.middleware.WhiteNoiseMiddleware",
# ...
]
# STORAGES = {
# "staticfiles": {
# "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage",
# },
# }
上述代码注释掉了我们为WhiteNoise设置的所有配置。
安装包
为了让项目能够与S3协同工作,我们需要安装两个包:boto3和django-storages。boto3提供了一个与AWS服务交互的低级Python API,而django-storages则扩展了Django的文件存储功能,使其能够与Amazon S3等云存储提供商集成,让你可以无缝地在Django应用中管理和提供静态和媒体文件:
pip install boto3 django-storages
配置设置
为了让我们的项目能够从S3提供文件,我们需要对settings.py
文件进行一些更改,并使用以下代码更新它:
# sitepoint_django/settings.py
import os # 首先导入os模块
# S3存储设置
STORAGES = {
'staticfiles': {
'BACKEND': 'storages.backends.s3boto3.S3Boto3Storage',
'OPTIONS': {
'bucket_name': os.getenv('AWS_STORAGE_BUCKET_NAME'),
'location': 'static',
'querystring_auth': False,
},
}
}
上述设置创建了一个STORAGES
字典,作为定义项目内各种存储后端的集中配置容器。
需要注意的是,此设置仅适用于Django 4.2及以上版本。对于早期版本,请查阅文档。
在代码中,我们有一个staticfiles
的设置,用于标识管理静态文件的存储配置。
在STORAGES
设置后,我们需要在设置文件中添加一些AWS特定的设置,因此请滚动到找到STATIC_URL
设置的部分,并进行以下更改:
# sitepoint_django/settings.py
USE_S3 = os.getenv('USE_S3')
if USE_S3:
AWS_ACCESS_KEY_ID = os.getenv('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.getenv('AWS_SECRET_ACCESS_KEY')
AWS_S3_OBJECT_PARAMETERS = {
"CacheControl": "max-age=2592000",
}
else:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
将静态文件上传至S3
设置完成后,下一步是将静态文件上传到S3桶。通过运行collectstatic
来实现:
python manage.py collectstatic --no-input
这将收集项目应用中的所有静态文件,将其移动到S3桶中,并按照STORAGES
字典中定义的那样放入static
文件夹。没有--no-input
标志则指示Django以非交互模式运行,跳过任何用户输入提示。
使用Django时,系统会自动进行静态文件收集流程,无需用户手动干预。
项目运行
设置完成后,即可启动项目。让我们在开发环境中运行项目,并将文件从S3桶提供服务:
python manage.py runserver
为验证文件确实由S3提供,可查看首页源代码:
<link rel="stylesheet" href="https://sitepoint-django-static.s3.amazonaws.com/static/static_demo/css/styles.css">
<img src="https://sitepoint-django-static.s3.amazonaws.com/static/static_demo/images/flowerImage.png" alt="Flower Image">
<script src="https://sitepoint-django-static.s3.amazonaws.com/static/static_demo/js/todays_date.js"></script>
查看HTML元素显示,确实URL指向了S3桶。
总结
总之,管理Django中的静态文件需评估项目需求、可扩展性及托管环境限制,以选择最合适的方法。
例如,WhiteNoise中间件在资源受限和有限服务器访问的共享托管环境中,为提供静态文件提供了高效解决方案。
通过适当配置Django设置并利用WhiteNoise等工具,开发者可确保在任何托管环境中都能提供可靠且优化的静态文件服务。每种方法都有其优势和考量,需仔细评估以满足项目特定需求,提供无缝用户体验。
我们已涵盖几个关键点:
静态文件管理方法。 我们探讨了多种策略,包括本地托管静态文件、利用Django内置开发服务器、采用第三方存储解决方案如Amazon S3,以及通过WhiteNoise等包提供文件服务。每种方法各有优劣,需根据可扩展性、性能和部署便捷性等因素权衡选择。
常见配置与命令:
STATIC_ROOT
:指定收集的静态文件存储目录。STATIC_URL
:定义通过Web服务器访问静态文件的基础URL。STATICFILES_DIRS
:指定包含静态资产的额外目录。STATICFILES_STORAGE
:配置处理静态文件的存储后端。collectstatic
:将所有应用目录中的静态资产收集至STATIC_ROOT
。
深入阅读:
Source:
https://www.sitepoint.com/managing-static-files-in-django-a-comprehensive-guide/