2009-07-02 13 views
20

buduję app django i nie mogę dostać szablony, aby zobaczyć pliki CSS ... Mój plik settings.py wygląda następująco:Django szablon nie widzi plików CSS

MEDIA_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media') 
MEDIA_URL = '/media/' 

I „ve got pliki CSS w/mysite/media/css/i kod szablonu zawiera:

<link rel="stylesheet" type="text/css" href="/media/css/site_base.css" />` 

następnie w pliku url.py mam:

# DEVELOPMENT ONLY 
(r'^media/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': '/media'}), 

ale ser rozwój ver obsługuje zwykły html (bez stylów). Co ja robię źle?

-

OK - Mam to działa w oparciu o to, co ludzie mówili. Odpowiedź brzmi:

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}), 
    ) 

i voila! To działa.

+1

Ok ... upvote za pomoc mi się powieść, ale ... tam ** nie ma katalogu ** '/ mymedia /' wewnątrz '/ media /' ...więc, jak to wymaga w "href"? Gdzie to wygląda? – Droogans

Odpowiedz

13

w „rozwój” bloku tylko w swojej urls.py trzeba zmienić

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

do ...

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

miałem podobny problem, kiedy próbuje uzyskać jQuery pracować. Moja poprawka polegała na dodaniu aliasu do mojego pliku httpd.conf Apache, który wskazywał na folder zawierający .js. Możesz zrobić to samo z folderem CSS.

2

Na serwerze dev, lubię oszukiwać i umieścić następujące w moim urls.py

if settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^includes/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/static/files'}), 
    ) 

ten sposób niczego w projekcie w ramach „/ zawiera” folder jest serwer przez serwer dev. Możesz zmienić to na "/ media". Domyślnie

5

ADMIN_MEDIA_PREFIX jest domyślnie ustawiona na \media\ i prawdopodobnie "kradnie" ścieżkę. Zmień to ustawienie lub użyj innego dla mediów nieadministracyjnych - np. site_media lub assets.

+0

Dziękuję Daniel! Już wyciągnąłem włosy! To nie pierwszy raz, kiedy znalazłem twoje odpowiedzi na pytania Django bardzo pomocne, więc myślę, że to wielkie podziękowanie. – Paul

1

To również zadziałało dla mnie, dzięki chłopaki !!

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}), 
) 

wewnątrz szablony:

<link type="text/css" href="/statics/css/base/jquery.ui.all.css" rel="stylesheet" /> 
+0

to również zadziałało, ale zastanawiam się, co muszę zmienić, kiedy będę wdrażał projekt w Internecie. –