Some of settings are misused:
STATIC_URL = '/static/'
– this is fine
STATIC_ROOT = '/vira_app/template'
– nope, this is supposed to be some folder not really related to the project structure. In the end, on prod it can be a CDN URL or a folder on different server. So try changing it to something like STATIC_ROOT = os.path.join(BASE_DIR, 'static')
for the start.
As mentioned in comments you might need to define STATICFILES_DIRS
– a list of folders where from static files must be collected to STATIC_ROOT by collectstatic
command. This means you can have many subfolders containing static files in different places. However you’ll need to collect those files all together to deploy somewhere. STATICFILES_DIRS
+ collectstatic
will collect all of those files for you into given STATIC_ROOT
(and contents of this folder should be deployed somewhere, to CDN for example).
Note, default set of STATICFILES_FINDERS already contains AppDirectoriesFinder
which will automatically find all the static
subfolders in any of the project apps. This means if you move static
subfolder from templates
to the vira_app
root – you won’t have to mention it in the STATICFILES_DIRS
.
So:
STATIC_ROOT
should not point to anytemplates
subfolders, change it to something more “global”STATICFILES_DIRS
should link to the folder(s) where you keep your static files now or this folder should be moved to the root ofvira_app
to letcollectstatic
find itcollectstatic
must be run before checking your styles and scripts in rendered page- after running
collectstatic
all the static files must persist inSTATIC_ROOT
so django will be able to map relative urls afterSTATIC_URL
to relative paths afterSTATIC_ROOT
and those files will be loaded
PS
Note, some of your static files are linked in wrong way in the shown template:
<script src="assets/vendor/aos/aos.js"></script>
this should be changed to {% static...
as well.