如何使用 Django 和 Whitenoise 服务器 favicon.ico
How to server favicon.ico with Django and Whitenoise
我对静态文件使用 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
管理
您的 BASE_DIR
中可以有一个 root_staticfiles
文件夹,它仅包含您要在 /
上提供的静态文件。
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_staticfiles')
在这种情况下,Whitenoise 将在您的应用程序的根目录中提供 BASE_DIR/root_staticfiles/
中的所有文件。
我有一个使用 Whitenoise(托管在 Heroku 上)的 Django 应用程序,并从我的静态文件的单独文件夹中为我的网站图标提供服务。
在路径 BASE_DIR/root_files
上创建一个文件夹 root_files
。
在settings.py中:
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_files')
查看真实代码示例 Mozilla's Bedrock repo. They have favicons in BASE/root_files
and configure WHITENOISE_ROOT
in settings.py
您可以按照此 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))
我对静态文件使用 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
管理
您的 BASE_DIR
中可以有一个 root_staticfiles
文件夹,它仅包含您要在 /
上提供的静态文件。
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_staticfiles')
在这种情况下,Whitenoise 将在您的应用程序的根目录中提供 BASE_DIR/root_staticfiles/
中的所有文件。
我有一个使用 Whitenoise(托管在 Heroku 上)的 Django 应用程序,并从我的静态文件的单独文件夹中为我的网站图标提供服务。
在路径 BASE_DIR/root_files
上创建一个文件夹 root_files
。
在settings.py中:
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_files')
查看真实代码示例 Mozilla's Bedrock repo. They have favicons in BASE/root_files
and configure WHITENOISE_ROOT
in settings.py
您可以按照此 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))