Reputation: 14134
Running Debian on Virtual Machine guest inside Windows host. Set Bridged for adapter-type. Installed Django on the guest and using build-in runserver
and built-in database for testing purposes.
Having simple files structure:
> ..
> templates
> base.html
> static
> css
> base.css
> manage.py
> setting.py
> ..
File settings.py
:
STATIC_URL = '/static/'
File base.html
:
{% load static %}
...
<link rel="stylesheet" href="{% static 'css/base.css' %}">
Getting error, not found:
GET http://192.168.XX.XX:8000/static/css/base.css
Debug
in settings.py
is set to true (means static files should be surved). The link looks correct. Now why doesn't this work?
Edit: looks like I forgot to run 'collectstatic'. Here is the output after running it:
Edit2:
EXTERNAL_APPS = [
..
'django.contrib.staticfiles',
]
PROJECT_NAME = 'fooproject'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, PROJECT_NAME, 'staticfiles')
STATIC_URL = '/static/'
Upvotes: 5
Views: 14074
Reputation: 14134
I have managed to resolve my problem with the help from ChristophBluoss and DanielRoseman. There were 2 problems:
python manage.py collectstatic
.STATIC_ROOT
and STATICFILES_DIRS
.After adding those variables into settings.py
file and successfully running collectstatic
- everything worked fine.
P.S. One should read Django documentation more carefully. It wasn't stated clear enough for me that collectstatic
is the mandatory thing.
EDIT: As DanielRoseman suggested collectstatic
along with STATIC_ROOT
is non-mandatory when DEBUG
is set to True
. I have tried to remove staticfiles
and STATIC_ROOT
- and it still works in my development environment. So STATICFILES_DIRS
was the missing setting.
Upvotes: 8