Одна возможность - STATIC_URL не будет заполнено в ваших шаблонах, если вы не передадите RequestContext.
Убедитесь, что у вас есть что-то похожее на это:
return render_to_response(template, context, context_instance=RequestContext(request))
Начиная с Django 1.3, вы также можете использовать новый ярлык:
return render(request, template, context)
Кроме того, убедитесь, что у вас есть 'django.core.context_processors.static' в ваших контекстных процессорах.
РЕДАКТИРОВАТЬ: Возможный ответ на вторую проблему, попробуйте изменить
STATICFILES_DIRS = (
os.getcwd().replace('\\','/') + '/static'
)
до
STATICFILES_DIRS = (
os.getcwd().replace('\\','/') + '/static',
)
РЕДАКТИРОВАТЬ 2: Больше возможных исправлений
Вы можете удалить STATICFILES_FINDERS. У вас установлено только значение по умолчанию, поэтому, если вы не собираетесь расширять его позже, избавьтесь от него (еще одна вещь, которая может пойти не так).
Вы также можете избавиться от записи urlpatterns. Не обязательно.
Возможно, ваш STATIC_ROOT неверен. Это должно быть место, где Django будет собирать все статические файлы по всему вашему проекту (включая каталоги, описанные в STATICFILES_DIRS), когда вы переходите в производство.
Пример из типичного settings.py моего:
PROJECT_DIR = os.path.dirname(__file__)
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR, 'static'),
)
STATIC_ROOT = '/var/www/myproject_staticfiles/'
Вот и все!
Если вы хотите проверить, правильно ли Django находит и размещает ваши статические файлы, попробуйте запустить
python manage.py collectstatic
В моем случае это будет проходить через каталоги моего проекта, найти все статические файлы, а затем скопировать их в '/ var / www / myproject_staticfiles /', где я могу разместить их с помощью apache.
Сервер разработчика Django автоматически обслуживает статические файлы из папки вашего проекта, поэтому не требуется collect_static, находясь в dev. Вам даже не нужно устанавливать STATIC_ROOT, пока вы не приступите к работе.