1

我对静态文件使用白噪声,它工作正常。

但是我怎样才能提供/favicon.ico文件?

有一个名为WHITENOISE_ROOT的设置,但我不明白如何使用它。

我想保持我的 nginx 配置简单并通过 gunicorn 提供所有文件

4

3 回答 3

4

如果您希望这些文件由collectstatic

让我们假设在运行之后collectstatic,您的favicon.ico文件最终被复制到root位于您的STATIC_ROOT目录中的子目录中。

然后,使用:

WHITENOISE_ROOT = os.path.join(STATIC_ROOT, 'root')

Whitenoise 将在STATIC_ROOT/root/您的应用程序的根目录中提供所有文件。

在您的情况下,STATIC_ROOT/root/favicon.ico将在/favicon.ico.

如果您不希望这些文件由collectstatic

您可以在其中有一个root_staticfiles文件夹,BASE_DIR其中仅包含您要在其中提供的静态文件/

WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_staticfiles')

在这种情况下,Whitenoise 将在BASE_DIR/root_staticfiles/您的应用程序的根目录中提供所有文件。

于 2021-02-01T21:44:34.430 回答
1

我有一个 django 应用程序,它使用 Whitenoise(托管在 Heroku 上)并从我的静态文件的单独文件夹中提供我的 favicon。

root_files在 path 处创建一个文件夹BASE_DIR/root_files

在 settings.py 中:

WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_files')

有关真实的代码示例,请查看Mozilla 的 Bedrock 存储库。他们在settings.pyBASE/root_files中有网站图标并进行配置WHITENOISE_ROOT

于 2021-02-01T21:54:41.787 回答
1

您可以根据hanleyhansen 的这个答案在基本模板中添加以下行(由所有其他模板使用):

<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>

或者,您可以通过 wim 编写一个类似此答案的重定向视图,只需稍作修改:

from django.views.generic.base import RedirectView
from django.conf.urls.static import static

re_path(r'^favicon\.ico$', RedirectView.as_view(url=static('favicon.ico'), permanent=True))
于 2021-02-07T09:54:01.850 回答