2016-03-09 7 views
1

По некоторым причинам я не могу включить файлы bootstrap css. Я совершенно новичок в Python и Django, поэтому я определенно делаю что-то неправильно.Статические файлы Django (css) не работают

  • Джанго 1.9.2

После прочтения official Django explanation на "статических файлов" управления Я абсолютно нулевой умнее :(Вот мой проект папки иерархии:.

/projectname/ 
    /appname/ 
     /static/ 
     | /appname/ 
     |  /css/ 
     |  | bootstrap.min.css 
     |  | custom.css 
     |  /img/ 
     |  /js/ 
     | 
     /templates/ 
      /includes/ 
       head.html 
       footer.html 
      index.html 
      base.html 

Я начал с основ, поэтому проигнорировал head.html и попытался с base.html следующим образом:

<title>{% block title %}{% endblock %}</title> 

<!-- Bootstrap core CSS --> 
{% load staticfiles %} 
<link href="{% static 'static/appname/css/bootstrap.min.css' %}" rel="stylesheet"> 

Не повезло. Вот файл мои настройки:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 
... 

STATIC_URL = '/static/' 
MEDIA_URL = '/media/' 
STATIC_ROOT = os.path.join(BASE_DIR, 'static') 
MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 
STATICFILE_DIRS ='/users/edchigliak/documents/projects/projectname/appname/static/' 

Как фас, как я понимаю, можно иметь «глобальные» «статические файлы местоположения», которые все ваши проекты могут использовать, и «в приложении» «статические файлы местоположение» который может использоваться только приложением, внутри которого находится базовый каталог.

Любая помощь оценена!

EDIT:

Это моя urls.py конфигурация:

from django.conf.urls import url 
from django.contrib import admin 
from budgeteer.views import hello, hours_ahead, current_datetime 

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'^hello/$', hello), 
url(r'^index/$', current_datetime), 
url(r'^time/plus/(\d{1,2})/$', hours_ahead), 
] 
+0

Удалить статику в статическом/appname/css/bootstrap.min.css (или static/appname, я не уверен на 100%) – Benjamin

+0

Возможно, если вы не находитесь в режиме отладки, вам нужно запустить collectstatic из manage.py – Benjamin

+0

Ах, видите ли, я читал о 'collectstatic', но я ненавижу делать то, что я не понимаю. Это значит, что эта команда принимает файлы из моих определенных мест и помещает их в другое место (копии), а THEN включает их в шаблон? Это немного сбивает с толку ... –

ответ

0

Моя быстро догадаться, что вы один уровень вверх. У вас есть каталог static, вложенный под appname. Попробуйте переместить его на уровень и получить доступ к ресурсу непосредственно в браузере (http://example.com/static/appname/css/bootstrap.min.css)

Я никогда не использовал конкретные ресурсы приложения, поэтому, если это цель, извини.

+0

Я думаю, что в обычном режиме есть статический каталог в приложении. Из django doc: «Теперь мы можем уйти с помещением наших статических файлов непосредственно в my_app/static/(вместо создания другого подкаталога my_app), но на самом деле это была бы плохая идея. » – Benjamin

0

Я думаю, вам нужно добавить следующее к URL-адресам:

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    # ... the rest of your URLconf goes here ... 
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

, если вы работаете на сервере Django, и это служит статичные файлы.

В соответствии с вашим документом Django ваша структура приложения в порядке.

Когда вы настроите свой продукт и начнете статическую работу с помощью Apache/Nginx/etc, вам потребуется запустить collectstatic. На данный момент это не нужно.

+0

Я использую свой локальный легкий сервер, который пришел с Django, чтобы получить представление о вещах :). Спасиба больше! –

+0

hah, np! Если это помогло вам принять ответ :) –

+0

К сожалению, не работает:/ –

0

Что делать, если ваша статическая ссылка начинается с appname?

т.е. вместо

<link href="{% static 'static/appname/css/bootstrap.min.css' %}" rel="stylesheet"> 

пожалуйста, попробуйте

<link href="{% static 'appname/css/bootstrap.min.css' %}" rel="stylesheet"> 

AFAIK, строка в {% static %} путь к статическому файлу внутри статической папки.

У меня недостаточно очков, чтобы комментировать, поэтому я оставляю свое предположение здесь.

+0

Нет, к сожалению, пока не работает. Вот что я получаю от терминала, когда я 'runningerver: [10/Март/2016 08:14:37]" GET/index/HTTP/1.1 "200 4872 Не найдено:/index/js/ie-emulation-modes- warning.js Не найдено: **/index/** css/ie10-viewport-bug-workaround.css Не найдено: /index/css/jumbotron.css ... Не найдено:/dist/js/bootstrap.min.js Не найдено: /assets/js/ie10-viewport-bug-workaround.js ... ' –

0

У меня есть аналогичная проблема (Django 1.10). Иерархия:

myapp 
    ... 
    myapp 
     ... 
    blog 
     migrations 
     templates 
     ... 
    static 
     blog 
     style.css 

Так что, если добавить <link href="{% static 'blog/css/bootstrap.min.css' %}" rel="stylesheet"> (style.css находится в директории «блог/KSS») все стили не будут работать.

НО, но я удаляю 'css': <link href="{% static 'blog/bootstrap.min.css' %}" rel="stylesheet"> (style.css) находится в хорошем состоянии.

Может быть, это вам поможет!

Смежные вопросы