css et django

Le
hervest
Bonjour,
J'aimerais savoir si quelqu'un dans ce forum code avec le framework django.J'ai des problèmes avec l'affichage de css. j'ai suivi ceci mais ça ne marche pas
http://www.unelectronlibre.info/journal/post/2006/11/13/Django-:-gestion-des-fichiers-statiques-ex-des-feuilles-de-styles-css
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #18244831
hervest a écrit :
Bonjour,
J'aimerais savoir si quelqu'un dans ce forum code avec le framework django.J'ai
des problèmes avec l'affichage de css. j'ai suivi ceci mais ça ne marche pas
http://www.unelectronlibre.info/journal/post/2006/11/13/Django-:-gestion-des-fichiers-statiques-ex-des-feuilles-de-styles-css




Extrait de ma conf (qui fonctionne):

# -----------
# settings.py
# -----------

import sys, os.path

# url du projet
HERE_URL = 'http://192.168.1.132:8000'

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

DEBUG = True

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to
# use a trailing slash.
# Examples: "http://foo.com/media/", "/media/".
# XXX : faire attention aussi à ne pas utiliser la même chose que pour
# MEDIA_URL, sinon ça marche pas
ADMIN_MEDIA_PREFIX = '/admin-media/'

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = '%s/media/' % PROJECT_PATH

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/"
MEDIA_URL = '%s/media/' % HERE_URL

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.request",

# pour avoir MEDIA_URL dans les templates
"django.core.context_processors.media",

# SNIP trucs spécifiques au projet
)

# -------
# urls.py
# -------
import sys, os.path
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(
'',
# SNIP - urls du projet ici
)

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



Voili voilà. Ah, oui : c'est avec django 1.0.

HTH
hervest
Le #18245891
Bruno Desthuilliers a écrit le 29/12/2008 à 16h18 :
hervest a écrit :
Bonjour,
J'aimerais savoir si quelqu'un dans ce forum code avec le framework
django.J'ai
des problèmes avec l'affichage de css. j'ai suivi ceci mais ça
ne marche pas
http://www.unelectronlibre.info/journal/post/2006/11/13/Django-:-gestion-des-fichiers-statiques-ex-des-feuilles-de-styles-css





Extrait de ma conf (qui fonctionne):

# -----------
# settings.py
# -----------

import sys, os.path

# url du projet
HERE_URL = 'http://192.168.1.132:8000'

PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

DEBUG = True

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to
# use a trailing slash.
# Examples: "http://foo.com/media/", "/media/".
# XXX : faire attention aussi à ne pas utiliser la même chose que
pour
# MEDIA_URL, sinon ça marche pas
ADMIN_MEDIA_PREFIX = '/admin-media/'

# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
MEDIA_ROOT = '%s/media/' % PROJECT_PATH

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com",
"http://example.com/media/"
MEDIA_URL = '%s/media/' % HERE_URL

TEMPLATE_CONTEXT_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.request",

# pour avoir MEDIA_URL dans les templates
"django.core.context_processors.media",

# SNIP trucs spécifiques au projet
)

# -------
# urls.py
# -------
import sys, os.path
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(
'',
# SNIP - urls du projet ici
)

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



Voili voilà. Ah, oui : c'est avec django 1.0.

HTH


Merci Bruno, mais ça ne marche pas et j'ai ce message d'erreur

Module "django.core.context_processors" does not define a "media" callable request processor

Pour mieux aussi comprendre j'ai besoin d'explication sur PROJECT_PATH, HERE_URL et TEMPLATE_CONTEXT_PROCESSOR. Le tutoriel que j'utilise est http://djangobook.zindep.com/1.0/ traduction du livre the definitive guide to Django web developpement done right

et je n'ai pas ces paramètres pour settings.py dans le livre. Pourriez vous m'expliquer et m'aider pour en finir avec ce problème de css et d'image?
Merci
Bruno Desthuilliers
Le #18247471
hervest a écrit :
(snip)
Voili voilà. Ah, oui : c'est avec django 1.0.

HTH


Merci Bruno, mais ça ne marche pas et j'ai ce message d'erreur

Module "django.core.context_processors" does not define a "media" callable
request processor



Quelle version de django utilises-tu ? Serait-ce la 0.96, par hasard ?
Si oui (ce qui est probable, context_processors.media ayant été ajouté
depuis), tu ferais mieux de passer à la 1.x. Ca t'évitera de perdre du
temps à apprendre des trucs qui ne sont plus d'actualité !-)

Pour mieux aussi comprendre j'ai besoin d'explication sur PROJECT_PATH,



PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

__file__ est le chemin complet du fichier courant
os.path.abspath(somepath) retourne le chemin absolu (depuis la raçine)
de 'somepath'
os.path.dirname(somepath) retourne le chemin absolu du répertoire
contenant 'somepath'

Le tout te donne donc le chemin absolu du répertoire contenant
settings.py, donc le chemin absolu de ton projet django. Ca évite de le
coder en dur, et permets donc de déplacer le projet (par exemple entre
ta machine de dev, le serveur de tests, et le serveur de prod) sans
modifier les settings.

Et non, ça ne fait pas partie des "settings" reconnus par Django - mais
bon, settings.py n'est qu'un module Python, n'est-ce pas, donc tu peux y
ajouter ce que tu veux.

HERE_URL



Autre ajout perso, pour éviter de dupliquer l'url dans toute la conf.
C'est moins "magique" que PROJECT_PATH, mais ça évite quand même des
bourdes...

et TEMPLATE_CONTEXT_PROCESSOR.



(avec un "S" : TEMPLATE_CONTEXT_PROCESSOR*S*)

Ca c'est du standard Django, et c'est documenté:

http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

Le tutoriel que j'utilise est
http://djangobook.zindep.com/1.0/ traduction du livre the definitive guide to
Django web developpement done right



Qui couvre essentiellement Django 0.96. La doc officielle (et à jour) de
Django est là:

http://docs.djangoproject.com/en/dev/

et je n'ai pas ces paramètres pour settings.py dans le livre.



http://docs.djangoproject.com/en/dev/ref/settings/#ref-settings

nb : en ce qui concerne PROJECT_PATH et HERE_URL, vu que ce sont des
ajouts persos, il est normal que tu ne les trouve pas dans la doc !-)

Pourriez vous
m'expliquer et m'aider pour en finir avec ce problème de css et d'image?



La conf (settings.py et urls.py) dont je t'ai posté les extraits
nécessaires fonctionne avec django 1.0. La dernière release officielle
est la 1.0.2.

Si tu tiens absolument à rester sur la 0.96 (ce qui est, je le répète,
une totale perte de temps), la fonction context_processors.media est
très simple:


from django.conf import settings

def media(request):
"""
Adds media-related context variables to the context.
"""
return {'MEDIA_URL': settings.MEDIA_URL}


HTH
hervest
Le #18247961
Bruno Desthuilliers a écrit le 29/12/2008 à 19h48 :
hervest a écrit :
(snip)
Voili voilà. Ah, oui : c'est avec django 1.0.

HTH



Merci Bruno, mais ça ne marche pas et j'ai ce message d'erreur

Module "django.core.context_processors" does not define a
"media" callable
request processor




Quelle version de django utilises-tu ? Serait-ce la 0.96, par hasard ?
Si oui (ce qui est probable, context_processors.media ayant été
ajouté
depuis), tu ferais mieux de passer à la 1.x. Ca t'évitera de
perdre du
temps à apprendre des trucs qui ne sont plus d'actualité !-)

Pour mieux aussi comprendre j'ai besoin d'explication sur PROJECT_PATH,




PROJECT_PATH = os.path.dirname(os.path.abspath(__file__))

__file__ est le chemin complet du fichier courant
os.path.abspath(somepath) retourne le chemin absolu (depuis la raçine)
de 'somepath'
os.path.dirname(somepath) retourne le chemin absolu du répertoire
contenant 'somepath'

Le tout te donne donc le chemin absolu du répertoire contenant
settings.py, donc le chemin absolu de ton projet django. Ca évite de le
coder en dur, et permets donc de déplacer le projet (par exemple entre
ta machine de dev, le serveur de tests, et le serveur de prod) sans
modifier les settings.

Et non, ça ne fait pas partie des "settings" reconnus par
Django - mais
bon, settings.py n'est qu'un module Python, n'est-ce pas, donc tu peux y
ajouter ce que tu veux.

HERE_URL




Autre ajout perso, pour éviter de dupliquer l'url dans toute la conf.
C'est moins "magique" que PROJECT_PATH, mais ça évite
quand même des
bourdes...

et TEMPLATE_CONTEXT_PROCESSOR.




(avec un "S" : TEMPLATE_CONTEXT_PROCESSOR*S*)

Ca c'est du standard Django, et c'est documenté:

http://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

Le tutoriel que j'utilise est
http://djangobook.zindep.com/1.0/ traduction du livre the definitive guide to
Django web developpement done right




Qui couvre essentiellement Django 0.96. La doc officielle (et à jour) de
Django est là:

http://docs.djangoproject.com/en/dev/

et je n'ai pas ces paramètres pour settings.py dans le livre.




http://docs.djangoproject.com/en/dev/ref/settings/#ref-settings

nb : en ce qui concerne PROJECT_PATH et HERE_URL, vu que ce sont des
ajouts persos, il est normal que tu ne les trouve pas dans la doc !-)

Pourriez vous
m'expliquer et m'aider pour en finir avec ce problème de css et
d'image?




La conf (settings.py et urls.py) dont je t'ai posté les extraits
nécessaires fonctionne avec django 1.0. La dernière release
officielle
est la 1.0.2.

Si tu tiens absolument à rester sur la 0.96 (ce qui est, je le
répète,
une totale perte de temps), la fonction context_processors.media est
très simple:


from django.conf import settings

def media(request):
"""
Adds media-related context variables to the context.
"""
return {'MEDIA_URL': settings.MEDIA_URL}


HTH


Je viens d'installer django 1.0.2. Et je remarque que tout passe bien maintenant. Aussi j'ai compris vos explications. Je pense que votre façon de faire (PROJECT_PATH et HERE_URL) est une très bonne méthode et je vais la garder.
Merci beaucoup.
Publicité
Poster une réponse
Anonyme