2010-07-06 4 views
0

dans mon application, je veux utiliser un fichier css, mais le tempalte ne sait pas où le fichier est, même si je l'ai configuré comme dans les tutoriels:Le fichier django css n'est pas reconnu - configuration incorrecte?

dans le urls.py (les urls fichier à la racine du site, n'appartenant pas à une application)

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

dans le modèle

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

dans les paramètres:

STATIC_DOC_ROOT = '/site_media' 

où puis-je me tromper? Merci

Répondre

3

Vérifiez django-annoying, c'est une application très utile avec beaucoup de décorateurs pratiques, middlewares et fonctions. Si vous ajoutez le middleware StaticServe comme ça, Django servira statique si DEBUG = True sans le paramétrer explicitement dans 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',      
) 

Ensuite, vérifiez votre MEDIA_URL (dans votre cas, il est STATIC_DOC_ROOT, mais vous devez utiliser MEDIA_URL) et le chemin MEDIA_ROOT. MEDIA_ROOT doit pointer vers le chemin absolu vers votre répertoire statique. Voici comment je le fais dans 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/' 

Vous pouvez utiliser la même fonction pour définir votre chemin vers templates dir.

+0

J'ai utilisé cette méthode, merci beaucoup! il n'était pas nécessaire d'installer le middleware ennuyeux, pour l'instant ça va bien sans: D Merci encore! – dana

+0

sûrement ce n'est pas nécessaire, mais j'aime vraiment l'application django-ennuyeux et pensé que vous pouvez le trouver utile :) –

+0

je vais le revoir en cas de problème;) merci! :) – dana

2

L'argument document_root-static.serve doit être l'emplacement du fichier sur le système de fichiers du serveur, pas l'URL. Donc, sauf si votre fichier css est vraiment dans le répertoire /site_media sur votre disque, ce qui semble peu probable, vous voulez autre chose comme STATIC_DOC_ROOT.

+0

si je l'ai lu 3 fois , je ne comprends vraiment pas ce que tu veux dire. dois-je changer le chemin STATIC_DOC_ROOT à l'absolu sur mon disque ou? ... – dana

+1

Oui, c'est exactement ce que je veux dire. –

+0

je vais l'essayer maintenant, et poster le résultat :) merci beaucoup! :) – dana