我使用whitenoise处理静态文件,它工作得很好。但我如何提供/favicon.ico文件?有一个名为WHITENOISE_ROOT的设置,但我不知道如何使用它。我想保持我的nginx配置简单,并通过gunicorn提供所有文件
/favicon.ico
4ngedf3f1#
collectstatic
让我们假设在运行collectstatic之后,favicon.ico文件最终被复制到STATIC_ROOT目录下的root目录中。然后,使用:
favicon.ico
STATIC_ROOT
root
WHITENOISE_ROOT = os.path.join(STATIC_ROOT, 'root')
Whitenoise将在应用程序的根目录下提供STATIC_ROOT/root/中的所有文件。在您的情况下,STATIC_ROOT/root/favicon.ico将在/favicon.ico上提供。
STATIC_ROOT/root/
STATIC_ROOT/root/favicon.ico
您可以在BASE_DIR中拥有一个root_staticfiles文件夹,其中仅包含您希望在/上提供的静态文件。
BASE_DIR
root_staticfiles
/
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_staticfiles')
在这种情况下,Whitenoise将在应用程序的根目录下提供BASE_DIR/root_staticfiles/中的所有文件。
BASE_DIR/root_staticfiles/
pathlib
从现在开始,Django创建的默认settings.py使用pathlib。为了与它保持一致,可以用/操作符替换os.join调用,例如:
settings.py
os.join
WHITENOISE_ROOT = STATIC_ROOT / 'root'
mbjcgjjk2#
您可以按照此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.templatetags.static import static re_path(r'^favicon\.ico$', RedirectView.as_view(url=static('favicon.ico'), permanent=True))
lqfhib0f3#
我有一个django应用程序,它使用Whitenoise(托管在Heroku上),并从静态文件的单独文件夹中提供我的favicon。在路径BASE_DIR/root_files处创建一个文件夹root_files。在settings.py:
BASE_DIR/root_files
root_files
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_files')
对于现实生活中的代码示例checkout Mozilla's Bedrock repo。他们在BASE/root_files中有favicon,在settings.py中配置WHITENOISE_ROOT
BASE/root_files
WHITENOISE_ROOT
3条答案
按热度按时间4ngedf3f1#
如果您希望这些文件由
collectstatic
管理让我们假设在运行
collectstatic
之后,favicon.ico
文件最终被复制到STATIC_ROOT
目录下的root
目录中。然后,使用:
Whitenoise将在应用程序的根目录下提供
STATIC_ROOT/root/
中的所有文件。在您的情况下,
STATIC_ROOT/root/favicon.ico
将在/favicon.ico
上提供。如果您不希望这些文件由
collectstatic
管理您可以在
BASE_DIR
中拥有一个root_staticfiles
文件夹,其中仅包含您希望在/
上提供的静态文件。在这种情况下,Whitenoise将在应用程序的根目录下提供
BASE_DIR/root_staticfiles/
中的所有文件。关于
pathlib
的更新(2022-10-04)从现在开始,Django创建的默认
settings.py
使用pathlib
。为了与它保持一致,可以用/
操作符替换os.join
调用,例如:mbjcgjjk2#
您可以按照此answer by hanleyhansen在基础模板中添加以下行(由所有后续模板使用):
或者你可以写一个像this answer by wim这样的重定向视图,做一些小的修改:
lqfhib0f3#
我有一个django应用程序,它使用Whitenoise(托管在Heroku上),并从静态文件的单独文件夹中提供我的favicon。
在路径
BASE_DIR/root_files
处创建一个文件夹root_files
。在settings.py:
对于现实生活中的代码示例checkout Mozilla's Bedrock repo。他们在
BASE/root_files
中有favicon,在settings.py中配置WHITENOISE_ROOT