Django 静态文件的加载顺序

2023-04-11 00:00:00 静态 加载 顺序

Django 加载静态文件的顺序如下:

  1. 先从 app 目录中找到静态文件,这个目录默认是 app_name/static/app_name/,其中 app_name 是你的应用程序名称。例如,如果你的应用程序名称是 blog,那么静态文件的目录应该是 blog/static/blog/

  2. 如果 Django 没有找到相应的文件,就会去查找所有第三方应用程序的静态文件。这些文件默认位于 project_name/static/ 目录下,其中 project_name 是你的 Django 项目名称。

  3. 如果文件还是没有找到,则会去查找 django.contrib.staticfiles 应用程序中的静态文件,这个目录的默认路径是 django/contrib/staticfiles/static

  4. 最后,如果还是找不到文件,就会抛出 TemplateDoesNotExist 异常。

下面是一个简单的演示,假设我们在应用程序中有一个名为 index.html 的模板,同时静态文件目录下有一个名为 style.css 的样式文件。

首先,我们定义一个视图,它会渲染模板,并将模板中渲染方法需要的上下文传递给模板:

from django.shortcuts import render

def index(request):
    context = {'site': 'pidancode.com'}
    return render(request, 'index.html', context)

接着,我们来看一下 index.html 模板的代码,其中包含了一个 link 标签,用于加载 style.css 样式文件:

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>{{ site }}</title>
    <link rel="stylesheet" type="text/css" href="{% static 'style.css' %}">
</head>
<body>
    <p>Hello, Django!</p>
</body>
</html>

注意到我们使用了 load 标签加载了静态文件相关的模板标签。然后,在样式文件链接中使用了 {% static 'style.css' %},这个模板标签会自动获取正确的文件路径。

最后,我们需要在静态文件目录下创建 style.css 文件,并添加一些样式规则,比如设置 p 元素的颜色为红色:

p {
    color: red;
}

这样,我们就完成了一个简单的静态文件的加载顺序的演示。

相关文章