Шаблон Django не может видеть файлы CSS
Я создаю приложение django, и я не могу заставить шаблоны видеть файлы CSS... Мой файл settings.py выглядит так:
MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')
MEDIA_URL = '/media/'
У меня есть файлы CSS в/mysite/media/css/и код шаблона содержит:
<link rel="stylesheet" type="text/css" href="/media/css/site_base.css" />`
то в файле url.py у меня есть:
# DEVELOPMENT ONLY
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': '/media'}),
но сервер разработки служит для простого html (без стилей). Что я делаю не так?
-
ОК - я работал, основываясь на том, что вы сказали. Ответ:
settings.py:
MEDIA_ROOT = 'd://web//mysite//media//' #absolute path to media
MEDIA_URL = '/mymedia/' #because admin already using /media
site_base.html:
<link rel="stylesheet" type="text/css" href="/mymedia/css/site_base.css" />
urls.py
from mysite import settings
if settings.DEBUG:
urlpatterns += patterns('',
(r'^mymedia/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
И вуаля! Он работает.
Ответы
Ответ 1
в блоке "только для разработки" в urls.py вам нужно изменить
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': '/media'}),
чтобы...
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
Ответ 2
ADMIN_MEDIA_PREFIX
по умолчанию установлен на \media\
и, вероятно, "крадет" путь. Измените эту настройку или используйте другую для не-админ-медиа - например, site_media
или assets
.
Ответ 3
На dev-сервере мне нравится обманывать и помещать следующее в мой urls.py
if settings.DEBUG:
urlpatterns += patterns('',
(r'^includes/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/static/files'}),
)
Таким образом, все, что находится в проекте под папкой "/includes", является сервером dev-сервера. Вы можете просто изменить это на "/media".
Ответ 4
Он также работал у меня, спасибо, ребята!
settings.py
MEDIA_ROOT = '/home/pi/ewspaces/ws-classic/xima/media'
MEDIA_URL = '/statics/'
urls.py
if settings.DEBUG:
urlpatterns += patterns('',
(r'^statics/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)
внутри шаблонов:
<link type="text/css" href="/statics/css/base/jquery.ui.all.css" rel="stylesheet" />
Ответ 5
У меня была аналогичная проблема, когда я пытался заставить jQuery работать. Мое исправление заключалось в добавлении псевдонима в файл Apache httpd.conf, указывающий на папку, содержащую .js. Вы можете сделать то же самое с вашей папкой CSS.