Django runserver not serving static files in development

Meir picture Meir · Dec 5, 2013 · Viewed 20.9k times · Source

I am using Django with runserver for my development. When I deploy to my production server I can see all my static files, but not on my local computer.

I did collectstatic and I have set DEBUG = True.

I found many different opinions online, the most prominent being the STATICFILES_DIRS, but that does not work for me.

How can I set it so that in my development environment I can see the static files, and when I upload my files to the server I do not need to make any changes for the production environment to work properly.

Edit - my urls.py file:

from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
import newsflashes
import settings

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('newsflashes.urls')),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Edit - file structure:

I have two directories, static and dynamic. Inside static are the static files, and in the dynamic directory are the django apps.

Edit - Settings:

My relevant settings are as follows

STATIC_ROOT = os.path.join(BASE_DIR, '..', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()

Answer

Meir picture Meir · Dec 5, 2013

I managed to fix it.

I created another directory called static in my project folder called static, and copied there my static files.

I then added:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
import settings
if settings.DEBUG:
    urlpatterns += staticfiles_urlpatterns()

to my urls.py

and

STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)

to my settings.py.

Then, when I deploy I execute manage.py collectstatic and since Apache is configured properly, everything will work!

Based on http://dlo.me/archives/2013/01/14/how-to-serve-static-files-django/

Thanks to all.