2010-07-06 4 views
0

в моем приложении, я хочу использовать файл css, но tempalte не «знает», где находится файл, хотя я настроил его как в учебниках:django css файл не распознан - неправильная конфигурация?

в urls.py (URL-адреса файл в корневом каталоге сайта, не принадлежащие к приложению)

(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', 
     {'document_root': settings.STATIC_DOC_ROOT}), 

в шаблоне

<link href="/site_media/default.css" rel="stylesheet" type="text/css" /> 

в настройках:

STATIC_DOC_ROOT = '/site_media' 

где я могу ошибаться? Thanks

ответ

3

Check django-annoying, это очень полезное приложение с множеством удобных декораторов, посредников и функций. Если вы добавите StaticServe промежуточное ПО, Django будет обслуживать статические, если DEBUG = True без явной установки в urls.py.

MIDDLEWARE_CLASSES = (
    'annoying.middlewares.StaticServe', 
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware',    
    'django.middleware.doc.XViewMiddleware',    
    'django.contrib.auth.middleware.AuthenticationMiddleware',      
) 

Во-вторых, проверьте ваш MEDIA_URL (в вашем случае это STATIC_DOC_ROOT, но вы должны использовать MEDIA_URL) и MEDIA_ROOT путь. MEDIA_ROOT должен указывать на абсолютный путь к вашему статическому каталогу. Вот как я это делаю в setttings.py:

import os 


def rel(*x): 
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) 

# MEDIA_ROOT will point to media directory where settings.py is located 
MEDIA_ROOT = rel('media') 
MEDIA_URL = '/media/' 

Вы можете использовать ту же самую функцию, чтобы установить путь к templates реж.

+0

Я использовал этот метод, спасибо большое! не нужно было устанавливать раздражающее промежуточное ПО, так как теперь он отлично справляется без: D Еще раз спасибо! – dana

+0

конечно не нужно, но мне очень нравится django-раздражающее приложение и подумал, что вы можете найти его полезным :) –

+0

я просмотрю его в случае неприятностей;) спасибо! :) – dana

2

document_root аргумент static.serve должно быть расположение файла на сервере файловой системы, а не URL. Поэтому, если ваш файл css действительно находится в каталоге /site_media на вашем диске, что кажется маловероятным, вы хотите что-то еще, как STATIC_DOC_ROOT.

+0

хотя я прочитал его 3 раза , я действительно не понимаю, что вы имеете в виду. Должен ли я изменить путь STATIC_DOC_ROOT к абсолютному на моем диске или? ... – dana

+1

Да, это именно то, что я имею в виду. –

+0

Я попробую сейчас и опубликую результат :) Большое спасибо! :) – dana

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