2015-02-26 3 views
0

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

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

Вот мой settings.py:

STATIC_PATH = os.path.join(BASE_DIR, 'static') 
STATICFILES_FINDERS = ( 
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 


# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.7/howto/static-files/ 

MEDIA_URL = '/media/' 
MEDIA_ROOT = 'public/media/' 
STATIC_URL = '/static/' 
# STATIC_ROOT = 'public/static/' 
STATIC_DIRS = (
    STATIC_PATH, 
) 

base.html

<!DOCTYPE html> 

<html> 
    <head lang="en"> 
     <meta charset="UTF-8"> 
     <title>Address Book</title> 
     <link rel="stylesheet" type="text/css" href="{{STATIC_URL}}address_book/stylesheets/1.css" 
    </head> 
     {% if user.is_authenticated %} 
     <h1>Hello {{ user.username }}!</h1> 
     {% else %} 
     <h1>Please login below</h1> 
     {% endif %} 
    <body> 
     {% block body_block %}{% endblock %} 
    </body> 

    <h2> Need to make changes? </h2> 
    <ul> 
     <li><a href="{% url 'index' %}">Go home</a></li> 
     {% if user.is_authenticated %} 
     <li><a href="{% url 'logout' %}">Logout</a></li> 
     <li><a href="{% url 'add_client' %}">Add new client</a></li> 
     {% else %} 
     <li><a href="{% url 'login' %}">Login</a></li>  
     <li><a href="{% url 'register' %}">Register here</a></li> 
     {% endif %} 
    </ul> 

urls.py

from django.conf.urls import patterns, url 
from address_book import views 
from django.conf import settings 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 

urlpatterns = patterns('', 
     url(r'^$', views.index, name='index'), 
     url(r'^add_client/$', views.add_client, name='add_client'), 
     url(r'^register/$', views.register, name = 'register'), 
     url(r'^login/$', views.user_login, name='login'), 
     url(r'^logout/$', views.user_logout, name='logout'), 
     url(r'^(?P<client_name_slug>[\w\-]+)/$', views.client, name='client'), 
) 


# Serve media files only in development 
if settings.DEBUG: 
    urlpatterns += patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', { 
      'document_root': settings.MEDIA_ROOT, 
     }), 
    ) 
    urlpatterns += patterns('', (
     r'^static/(?P<path>.*)$', 
     'django.views.static.serve', 
     {'document_root': 'static'} 
)) 
else: 
    print "no server is configured to serve media files. Do it now." 


    </html> 
+1

Is 'DEBUG' установлен как' False'? Django не выполняет статические файлы, когда не работает в режиме отладки. См. [Этот вопрос] (http://stackoverflow.com/q/5836674/156755) для получения дополнительной информации. – Basic

+1

. Какой путь ваш браузер пытается использовать и какой путь он должен пытаться обслуживать? –

+0

DEBUG имеет значение True. Браузер пытается служить «href =»/static/address_book/stylesheets/1.css », которая является правильной папкой, но в любом случае она отображает 404 –

ответ

2

Вы должны удалить запись в вашем urls.py. Все, что я должен служить статические файлы заключается в следующем:

в моем settings.py:

DEBUG = True 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'myprojectname/static'), 
) 

# Static files (CSS, JavaScript, Images) 
# https://docs.djangoproject.com/en/1.7/howto/static-files/ 

STATIC_URL = '/static/' 

В моем шаблоне:

{% load staticfiles %} 

<script type="text/javascript" src="{% static 'raphael-min.js' %}"></script> 

расположение файла является ./myprojectname/static/raphael-min.js IE /home/username/djangoProjects/myprojectname/myprojectname/static/raphael-min.js

+0

. Этот ответ верный, но он не выделяет актуальную проблему, что OP использует 'STATIC_DIRS' вместо' STATICFILES_DIRS'. –

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