菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Django - 全局静态文件


添加全局 CSS 文件

我们已经学习了如何在应用程序的 static 文件夹中添加静态文件,以及如何在应用程序中使用它。

但是,如果您项目中的其他应用程序也想使用该文件怎么办?

那么,我们就必须在根目录创建一个文件夹,并将文件放在那里。

仅仅在根目录创建一个 static 文件夹是不够的,Django 会处理剩余的部分。我们需要告诉 Django 在哪里查找这些静态文件。

首先,在项目的根目录下创建一个文件夹,这个文件夹的名字可以随意取,在本教程中我将它命名为 mystaticfiles

my_tennis_club
    db.sqlite3
    manage.py
    my_tennis_club/
    members/
    mystaticfiles/

mystaticfiles 文件夹中添加一个 CSS 文件,文件名可以随意选择,在本例中我们称之为 myglobal.css

my_tennis_club
    db.sqlite3
    manage.py
    my_tennis_club/
    members/
    mystaticfiles/
        myglobal.css

打开 CSS 文件并插入以下内容

my_tennis_club/mystaticfiles/myglobal.css:

body {
  color: violet;
}

修改设置

您需要告诉 Django 也去根目录的 mystaticfiles 文件夹中查找静态文件,这在 settings.py 文件中完成。

添加一个 STATICFILES_DIRS 列表

my_tennis_club/my_tennis_club/settings.py:

.
.

STATIC_ROOT = BASE_DIR / 'productionfiles'

STATIC_URL = 'static/'

#Add this in your settings.py file:
STATICFILES_DIRS = [
    BASE_DIR / 'mystaticfiles'
]
.
.

STATICFILES_DIRS 列表中,您可以列出 Django 应该查找静态文件的所有目录。

BASE_DIR 关键字表示项目的根目录,与 / "mystaticfiles" 一起,意味着根目录下的 mystaticfiles 文件夹。

搜索顺序

如果您有同名的文件,Django 会使用第一个找到的文件。

搜索首先在 STATICFILES_DIRS 中列出的目录中进行,按照您提供的顺序。然后,如果文件未找到,搜索将继续在每个应用程序的 static 文件夹中进行。


修改模板

现在您有了一个用于整个项目的全局 CSS 文件,所有应用程序都可以访问它。

要在模板中使用它,请使用与 myfirst.css 文件相同的语法。

在模板开头添加以下内容

{% load static %}

并像这样引用文件

<link rel="stylesheet" href="{% static 'myglobal.css' %}">

示例

my_tennis_club/members/templates/template.html:

{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

</body>
</html>
运行示例 »

不起作用?

这是正确的。您需要再次收集静态文件。


收集静态文件

运行 collectstatic 命令来收集新的静态文件。

py manage.py collectstatic

这将产生以下结果:

您已请求将静态文件收集到目标
位置,如您的设置中所指定

    C:\Users\Your Name\myworld\my_tennis_club\productionfiles

这将覆盖现有文件!
您确定要这样做吗?

输入 'yes' 继续,或输入 'no' 取消

输入 yes

输入 'yes' 继续,或输入 'no' 取消: yes

这将产生以下结果:

1 个静态文件已复制到 'C:\Users\Your Name\myworld\my_tennis_club\productionfiles',131 个未修改。

示例应该可以工作

启动服务器,示例将可以工作。

py manage.py runserver

在您自己的浏览器中查看结果: 127.0.0.1:8000/testing/

示例

my_tennis_club/members/templates/template.html:

{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>

{% for x in fruits %}
  <h1>{{ x }}</h1>
{% endfor %}

</body>
</html>
运行示例 »


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持