Django - 添加静态文件

创建静态文件夹

构建 Web 应用程序时,您可能需要添加一些静态文件,例如图片或 CSS 文件。

首先,在您的项目中创建一个名为 static 的文件夹,位置与您创建 templates 文件夹的位置相同:

文件夹名称必须为 static。

my_tennis_club
    manage.py
    my_tennis_club/
    members/
        templates/
        static/

在 static 文件夹中添加一个 CSS 文件,文件名随意,本例中我们将其命名为 myfirst.css:

my_tennis_club
    manage.py
    my_tennis_club/
    members/
        templates/
        static/
            myfirst.css

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

my_tennis_club/members/static/myfirst.css:

body {
  background-color: lightblue;
  font-family: verdana;
}

修改模板

现在您有了一个包含一些 CSS 样式的 CSS 文件。下一步是将此文件包含在 HTML 模板中:

打开 templates/template.html 文件并添加以下内容:

{% load static %}

或者:

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

示例

my_tennis_club/members/templates/template.html:

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

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

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

重启服务器以使更改生效:

python manage.py runserver

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

不起作用?

只是测试? 如果您只是想试用一下,并不打算部署您的工作,您可以在 settings.py 文件中设置 DEBUG = True,这样上面的示例就可以正常运行了。

计划部署? 如果您计划部署您的工作,则应在 settings.py 文件中设置 DEBUG = False。上面的示例会失败,因为 Django 没有内置的静态文件服务解决方案,但还有其他方法可以提供静态文件服务,您将在下一章中学习。

示例(开发中):

my_tennis_club/my_tennis_club/settings.py:


.
.
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
.
.

这样可以让示例运行,但我们建议您选择DEBUG = False,因为这是学习如何使用 Django 的最佳方式。


选择 Debug = False

在本教程的其余部分,即使在开发环境中,我们也将使用DEBUG = False,因为这是学习如何使用 Django 的最佳方式。

示例:

my_tennis_club/my_tennis_club/settings.py:


.
.
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ['*']

.
.
ALLOWED_HOSTS

使用 DEBUG = False 时,您必须指定允许托管您的工作的主机名。您可以选择 '127.0.0.1' 或 'localhost', 这两个地址都代表您本地计算机的地址。

我们选择'*',这意味着任何地址都可以托管此站点。当您将项目部署到公共服务器时,应将其更改为真实的域名。


没成功?

没错,这个示例仍然无法运行。

您需要安装一个第三方库来处理静态文件。

有很多替代方案,我们将在下一章向您展示如何使用名为WhiteNoise的Python库。