如何使用 Django 和 Whitenoise 为 favicon.ico 服务

如何解决如何使用 Django 和 Whitenoise 为 favicon.ico 服务

我对静态文件使用 whitenoise 并且它工作正常。

但是我如何提供 /favicon.ico 文件

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

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

解决方法

如果您希望这些文件由 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/ 中提供所有文件。

,

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

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

在 settings.py 中:

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

要查看真实代码示例,请查看 Mozilla's Bedrock repo。他们在 BASE/root_files 中有网站图标并在 settings.py

中配置 WHITENOISE_ROOT ,

您可以按照此 answer by hanleyhansen 在基本模板中添加以下行(供所有其他模板使用):

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

或者你可以写一个像 this answer by 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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?