📅  最后修改于: 2023-12-03 15:00:26.914000             🧑  作者: Mango
在 Django 中,静态资源包括 HTML、CSS、JavaScript、图片、字体等等。在开发 Web 应用程序的时候,使用静态资源是非常常见的。Django 的静态资源可以通过多种方式来管理和呈现。
Django 使用一个名称为 STATIC_ROOT
的设置来表示放置静态文件的文件夹。通过指定该设置,Django 将所有的静态文件都收集到一个文件夹中,然后可以被 Web 服务器来提供给用户。
# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
需要注意的是,STATIC_ROOT
只是一个文件夹的路径,而不是 URL 地址。因此,对于开发环境,我们需要指定一个 URL 地址,让 Django 应用程序能够找到静态资源。
# settings.py
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
这里 STATICFILES_DIRS
是一个网站的静态文件夹列表。如果需要将其他文件夹中的静态文件包含在内,就可以添加到 STATICFILES_DIRS
中。
在 Django 中呈现静态文件有两种方式:
在 HTML 中使用静态文件是最常见的方式。为了引用静态文件,Django 提供了内置的模板标签,可以让我们更便捷地让 Web 页面引用静态文件。
<!-- 在模板中引用 CSS 文件 -->
{% load static %}
<link rel="stylesheet" href="{% static 'css/styles.css' %}">
这里的 {% static 'css/styles.css' %}
表示将 css/styles.css
文件链接到当前的 HTML 页面。
同样地,也可以使用 static
模板标签来引用 JavaScript 文件。
<!-- 在模板中引用 JavaScript 文件 -->
{% load static %}
<script src="{% static 'js/myscript.js' %}"></script>
在 Django 的视图函数中使用静态文件也很常见。这种方式通常用来处理 AJAX 请求。在视图函数中使用 Django 的 HttpResponse
对象可以返回正确的静态文件。
# views.py
from django.http import HttpResponse
from django.templatetags.static import static
def my_view(request):
path_to_file = static('css/styles.css')
with open(path_to_file, 'r') as f:
contents = f.read()
return HttpResponse(contents, content_type='text/css')
这里使用 django.templatetags.static
模块中的 static
函数获取正确的文件路径。然后,使用 HttpResponse
对象将文件内容返回。
最后,需要注意的是,在生产环境中,最好不要让 Django 服务静态资源,而是使用专门的 Web 服务器,如 Nginx 或 Apache,来提供静态资源。这样做可以提高服务器的速度和安全性。
在 Django 中使用静态文件很容易。使用 STATIC_ROOT
、STATIC_URL
、STATICFILES_DIRS
和 static
模板标签可以很好地管理静态文件的位置和呈现方式。在生产环境中,使用专门的 Web 服务器提供静态资源可以获得更好的性能。