Static files - need clarification of apparent contradiction in documentation

I can see the possible confusion there.

I would call it an issue of perspective. You can think of STATIC_ROOT as being “owned by” the server, not by you.

“You” are not supposed to store files there directly. It’s not a “source” for static files, it’s a destination for them.

So you shouldn’t think of STATIC_ROOT as a permanent home. It’s not usually part of your project directory structure, and shouldn’t be checked into your repo. In some common deployment scenarios, you may not even have access to it. What you definitely don’t want to do is place files there yourself. It’s a location for collectstatic to manage.

The collectstatic command is going to copy static files from their sources (from inside your project and from libraries) to STATIC_ROOT. And, if you use the -c parameter in your collectstatic command, it’s going to clear out that target directory before copying files into it. (Good for removing obsolete files)