2015-12-23 4 views
1

Я пытаюсь реализовать простой CSS-файл в моем веб-приложении python. Когда я пытаюсь Loding приложения, я получаю сообщение об ошибке в командной строке, которая говорит:Внедрение CSS в Django

"GET /static/css/default.css HTTP/1.1" 404 1658 

И конечно же нет CSS не реализован на страницу HTML. Структура моего проекта является:

ProjectName 
MyApp 
MyTeachingApp 
    static 
    css 
    default.css 
templates 
    page.html 

В моем settings.py, я получил:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 
INSTALLED_APPS = [ 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
] 
STATIC_URL = '/static/' 

И в HTML я получил ссылку тег внутри головы, как:

<link rel="stylesheet" href="{% static "css/default.css" %}" /> 

Как правильно реализовать CSS в своем веб-приложении? Должен ли я добавить что-то к url.py? Или это в settings.py с помощью STATIC_ROOT или STATICFILES_DIRS?

Я использую Django 1.9.

Мой urls.py файл содержит следующий код:

from django.conf.urls import url, include 
from django.contrib import admin 
from django.views import * 
from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^caesarTemp/', include('TeachingTool.urls')), 
] + static(settings.STATIC_URL, document_root = settings.STATIC_ROOT) 

Это urls.py в папке MyApp.

Я дополнительный файл urls.py внутри папки MyTeachingApp, которая содержит:

from django.conf.urls import url 
from . import views 
urlpatterns = [ 
    url(r'^$', views.printAlphabet, name = 'print'), 
] 

Я пытался добавить статический оператор в этом urls.py файле и до сих пор не работает.

Спасибо, продвинутый!

ответ

2

Вам нужно добавить приложение к INSTALLED_APPS кортежа.Кроме того, добавьте urlpatterns для обслуживания статических файлов с локального сервера разработки, как mastazi сказал:

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

Ваше приложение называется MyTeachingApp так кажется; конфигурация INSTALLED APPS должна выглядеть следующим образом:

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

Что мне нужно добавить к INSTALLED_APPS? Как django.contrib.MyApp? – Silvestrini

+0

Если ваш python chdir является каталогом корня вашего приложения, то просто добавьте 'MyTeachingApp' –

+0

Большое вам спасибо! Наконец, это сработало, мне не удалось добавить приложение в settings.py – Silvestrini

1

Если у вас есть статические файлы, которые связаны с одним конкретным приложением, структура будет:

Project 
    MyApp 
     static 
      MyApp 
       css 
       js 

       etc... 

Так внутри статики вы должны иметь вложенную папку с именем в качестве приложения. Причина объясняется здесь https://docs.djangoproject.com/en/1.9/howto/static-files/

Теперь мы могли бы быть в состоянии уйти с проставлением наши статические файлы непосредственно в my_app/статический/(а не создавать подкаталог my_app), но это было на самом деле плохая идея. Django будет использовать первый статический файл, который он находит, имя которого совпадает, и если у вас есть статический файл с тем же именем в другом приложении, Django не сможет отличить их. Мы должны уметь указать Django на правильную, и самый простой способ обеспечить это путем их размещения. То есть, ставя эти статические файлы в другой каталог, названный для самого приложения.

EDIT: Также убедитесь, что вы настроили urls.py:

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

Я попробовал то, что вы сказали здесь положить статические файлы в папке MyApp и создать папку с таким же именем, а также добавляется в urls.py статический оператор и все же его все еще не обнаружит файлы css. Есть другие идеи? – Silvestrini

+0

Возможно, вы могли бы попробовать поместить файл в Project/static/(то есть не в приложение), а затем попытаться посмотреть, загружена ли она ... Также было бы хорошо, если бы вы могли поделиться своим urls.py, например, вы есть только один urls.py для всего проекта, или у вас также есть один urls.py для каждого приложения ?. – mastazi

+0

Я отредактировал сообщение, посмотрю, что я добавил о обоих файлах urls.py, которые у меня есть. Я также попытался поместить статическую папку в папку Project, и она не нашла ее. – Silvestrini

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