I use whitenoise for static files and it works fine.
But how can I serve the /favicon.ico
file?
There is a setting called WHITENOISE_ROOT, but I don't understand how to use it.
I would like to keep my nginx config simple and serve all files via gunicorn
collectstatic
Let's assume after running collectstatic
, your favicon.ico
file ends up being copied in a root
subdirectory, located in your STATIC_ROOT
directory.
Then, with:
WHITENOISE_ROOT = os.path.join(STATIC_ROOT, 'root')
Whitenoise will serve all files in STATIC_ROOT/root/
at the root of your application.
In your case, STATIC_ROOT/root/favicon.ico
will be served at /favicon.ico
.
collectstatic
You can have a root_staticfiles
folder in your BASE_DIR
which simply contains the static files you want to serve at /
.
WHITENOISE_ROOT = os.path.join(BASE_DIR, 'root_staticfiles')
In this case, Whitenoise will serve all files in BASE_DIR/root_staticfiles/
at the root of your application.
pathlib
(2022-10-04)Since a while now, the default settings.py
Django creates uses pathlib
. To be consistent with it, one may replace os.join
calls with /
operators, eg.:
WHITENOISE_ROOT = STATIC_ROOT / 'root'