Статические файлы в 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/.

Надеюсь это поможет.

Другие вопросы по тегам