2009-07-02 5 views
20

Je construis une application django et je ne peux pas obtenir les modèles pour voir les fichiers CSS ... Mon fichier settings.py ressemble:modèle Django ne peut pas voir les fichiers CSS

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

I « ai les fichiers CSS dans/monsite/media/css/et le code de modèle contient:

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

puis, dans le fichier url.py je:

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

mais le développement ser ver sert le html simple (sans styles). Qu'est-ce que je fais mal?

-

OK - Je l'ai active en fonction de ce que vous avez dit des gens. La réponse est:

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

Et le tour est joué! Ça marche.

+1

Ok ... upvote pour me aider à décoller mais ... il ** n'est pas un répertoire ** '/ mymedia /' dans '/ media /' ...alors, comment le requiert-il dans le 'href'? Où cherche-t-il? – Droogans

Répondre

13

dans le « développement que » bloc dans votre urls.py vous devez changer

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

à ...

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

J'ai eu un problème similaire quand je tentais d'obtenir jQuery travailler. Ma solution consistait à ajouter un alias à mon fichier Apache httpd.conf pointant vers le dossier contenant le fichier .js. Vous pouvez faire la même chose avec votre dossier CSS.

2

Sur le serveur dev, j'aime tricher et mettre ce qui suit dans mon urls.py

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

que tout chemin dans le projet dans le dossier «/includes » est serveur par le serveur dev. Vous pouvez simplement changer cela en "/ media".

5

ADMIN_MEDIA_PREFIX est défini sur \media\ par défaut et est probablement en train de «voler» le chemin. Modifiez ce paramètre ou utilisez-en un autre pour les supports non-admin - par exemple site_media ou assets.

+0

Merci Daniel! Je tirais déjà mes cheveux! Ce n'est pas la première fois que j'ai trouvé vos réponses aux questions de Django très utiles, donc je suppose que c'est juste un grand merci. – Paul

1

Il a également travaillé pour moi, merci les gars !!

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

modèles à l'intérieur:

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

cela a également fonctionné pour moi mais je me demande ce que je dois changer quand je vais déployer le projet sur le web. –