2009-07-02 12 views
20

Estoy construyendo una aplicación de Django y no puedo conseguir las plantillas para ver los archivos CSS ... Mi archivo settings.py parece:plantillas de Django no puede ver los archivos CSS

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

I que tenga el CSS archivos en/proyecto/media/css/y el código de plantilla contiene:

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

a continuación, en el archivo url.py tengo:

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

pero el Ser desarrollo ver sirve el html simple (sin estilos). ¿Qué estoy haciendo mal?

-

OK - Lo tengo trabajo basado en lo que la gente ha dicho. La respuesta es:

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

y listo! Funciona.

+1

Ok ... upvote por ayudarme a salir del atasco, pero ... hay ** no es el directorio ** '/ mymedia /' dentro de '/ media /' ...Entonces, ¿cómo lo requiere en el 'href'? ¿Dónde está mirando? – Droogans

Respuesta

13

en el bloque "único desarrollo" en su urls.py necesita cambiar

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

a ...

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

tuve un problema similar cuando estaba tratando de conseguir jQuery trabajar. Mi solución fue agregar un alias a mi archivo httpd.conf de Apache que apuntaba a la carpeta que contenía el .js. Usted podría hacer lo mismo con su carpeta CSS.

2

En el servidor dev, me gusta hacer trampas y poner el siguiente en mi urls.py

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

De esa manera nada en el proyecto bajo el "/ includes" carpeta es del servidor en el servidor dev. Podrías simplemente cambiar eso a "/ media".

5

ADMIN_MEDIA_PREFIX se establece en \media\ de forma predeterminada, y es probable que 'robe' la ruta. Cambie esa configuración, o use una diferente para medios no administrativos, por ejemplo, site_media o assets.

+0

¡Gracias, Daniel! ¡Ya me estaba sacando el pelo! No es la primera vez que encuentro que tus respuestas a las preguntas de django son muy útiles, así que supongo que es un gran agradecimiento. – Paul

1

¡También funcionó para mí, gracias chicos!

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

plantillas interiores:

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

esto también funcionó para mí, pero me pregunto qué tengo que cambiar cuando despliegue el proyecto en la web. –

Cuestiones relacionadas