Статические файлы в Django 1.6
Вероятно, я делаю несколько вещей неправильно, потому что я все еще не могу заставить статические файлы работать правильно в моей среде разработки, несмотря на то, что я внимательно следил за учебником. У меня такое ощущение, что в Django 1.6 он работает немного по-другому, и я могу найти ответы только для предыдущих версий.
Вот моя структура каталогов:
mysite
├───app1
├───mysite
│ └───templates
├───resources
├───static
│ ├───css
│ ├───fonts
│ └───js
└───app2
Мои установленные приложения, чтобы доказать, что у меня есть статические файлы:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
'app2',
)
Мой шаблон и настройки статического файла:
# Templates
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, "mysite/templates"),
)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
Я даже сделал это в моем urls.py
как предложено:
urlpatterns = patterns('',
...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
И напоследок моя просьба:
{% load staticfiles %}
<link href="{% static "css/core.css" %}" rel="stylesheet">
Если я перейду прямо к http://127.0.0.1/static/css/core.css
, Я получил 'css\core.css' could not be found
Пожалуйста, скажите мне, что я сделал не так =[
1 ответ
Так как статический каталог не "живет" в одном из приложений (app1
, app2
в вашем случае), django не может найти статический каталог. Итак, с вашей текущей структурой вам нужно добавить статический каталог в STATICFILES_DIRS
,
Из документации:
"Ваш проект, вероятно, также будет иметь статические ресурсы, которые не привязаны к конкретному приложению. В дополнение к использованию статического / каталога внутри ваших приложений, вы можете определить список каталогов (STATICFILES_DIRS) в файле настроек, где Django также будет искать для статических файлов."
Что-то вроде этого:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
См.: https://docs.djangoproject.com/en/dev/ref/settings/.
Надеюсь это поможет.