Django-fr

Forum

#1 20-09-2010 15:12:39

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

media et js

Bonjour

je m'essai a django mais je bute dans la doc media ou comment integrer les
javascript et css dans mon application .....

la doc parle d'un fichier qui contiendrai

class CalendarWidget(forms.TextInput):
    class Media:
        css = {
            'all': ('pretty.css',)
        }
        js = ('animations.js', 'actions.js')

sans préciser quel fichier ou ni ou l'appeler
on doit pouvoir aussi creer sa class schemaWidgets ça semble bien fait

dans settings.py on indique un media url et un path
mais ça ne rend pas ce path accessible dans l'application

donc pour une bibliothèque javascript à appeler et ben je patauge ...

si quelqu'un aurai une explication sur le fonctionnement pour le chemin et
les liens afin d'appeler un css et une bibliothèque js

Merci

Tonton

Hors ligne

#2 20-09-2010 15:48:21

franck@netandco.net
Membre
Inscription : 11-08-2010
Messages : 8

Re : media et js

Bonjour
Dans un premier temps et pour y voir plus clair copies les fichiers que
tu veux accéder dans ton media path.
Si tu as défini ton media_path à :
/home/user/monprojet/media

Copies les fichiers qui sont contenus dans django/contrib/admin/media
dans un dossier admin de ma manière à avoir :
/home/user/monprojet/media
/home/user/monprojet/media/admin
/home/user/monprojet/media/admin/css/
/home/user/monprojet/media/admin/js/
etc...

Si ça ne fonctionne pas c'est que ton media_path est mal défini...

Enfin si tu développes en local il est courant d'ajouter dans tes urls :

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

Ceci permet au serveur de développement de django de servir les média
locaux.

La doc évoque l'ensemble de ces points :
http://docs.djangoproject.com/en/dev/howto/static-files/

et un autre lien qui évoque plus précisèment ton problème:
http://stackoverflow.com/questions/1788274/django-serving-admin-media-files


On 20/09/2010 16:12, Tonton wrote:
> Bonjour
>
> je m'essai a django mais je bute dans la doc media ou comment integrer les
> javascript et css dans mon application .....
>
> la doc parle d'un fichier qui contiendrai
>
> class CalendarWidget(forms.TextInput):
>      class Media:
>          css = {
>              'all': ('pretty.css',)
>          }
>          js = ('animations.js', 'actions.js')
>
> sans préciser quel fichier ou ni ou l'appeler
> on doit pouvoir aussi creer sa class schemaWidgets ça semble bien fait
>
> dans settings.py on indique un media url et un path
> mais ça ne rend pas ce path accessible dans l'application
>
> donc pour une bibliothèque javascript à appeler et ben je patauge ...
>
> si quelqu'un aurai une explication sur le fonctionnement pour le chemin et
> les liens afin d'appeler un css et une bibliothèque js
>
> Merci
>
> Tonton
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 20-09-2010 16:18:24

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : media et js

La doc évoque l'ensemble de ces points :
http://docs.djangoproject.com/en/dev/howto/static-files/

Merci je viens de d'appliquer ça pour le dev ça ira je crois


2010/9/20 franck _AT_ netandco.net <franck _AT_ netandco.net>

>  Bonjour
> Dans un premier temps et pour y voir plus clair copies les fichiers que tu
> veux accéder dans ton media path.
> Si tu as défini ton media_path à :
> /home/user/monprojet/media
>
> Copies les fichiers qui sont contenus dans django/contrib/admin/media dans
> un dossier admin de ma manière à avoir :
> /home/user/monprojet/media
> /home/user/monprojet/media/admin
> /home/user/monprojet/media/admin/css/
> /home/user/monprojet/media/admin/js/
> etc...
>
> Si ça ne fonctionne pas c'est que ton media_path est mal défini...
>
> mais pour tester ? quelle url ça doit donner . a quoi sert le admin ?
pour un fichier js dans /home/user/monprojet/media/admin/js/ ça doit donner
http://mondomaine/media/admin/js ou http://mondomaine/js ?

Bon en tous cas merci de ta reponse

Hors ligne

#4 20-09-2010 16:24:25

yohann gabory
Membre
Inscription : 11-08-2010
Messages : 8

Re : media et js

La technique du if settings.DEBUG est intéressante mais je préfère faire
un devel_settings et un production_settings cela à l'avantage d'être
déporté sur deux fichiers, donc plus facile à lire et cela permet
également de passer le site de prod en debug = True si besoin est.

Voici la technique (pour ceux qui ne la connaisse pas et pardon pour ls
autres) :

## dans le fichier settings.py, rajouter à la fin :

try:
    LOCAL_SETTINGS
except NameError:
    try:
        from local_settings import *
    except ImportError:
        pass

##Sur la machine de développement dans un fichier local_settings.py

LOCAL_SETTING= True   
from devel_settings import *

##Sur la machine en prod dans un fichier local_settings.py

LOCAL_SETTING= True   
from production_settings import *

et enfin, deux fichiers : devel_settings.py et production_settings.py
qui commencent tout deux comme cela :
import settings

Dans settings.py tu met ce qui concerne aussi bien le serveur de prod et
le serveur de dev.
Dans production_settings.py tout ce qui concerne le site de prod,
Dans devel_settings.py tout ce qui concerne le site en dev' donc pour
reprendre l'exemple :

urlpatterns += (r'^site-media/(?P<path>.*)$',
'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,
'show_indexes': True}),
    ),


Le lundi 20 septembre 2010 à 16:48 +0200, franck _AT_ netandco.net a écrit :
> Bonjour
> Dans un premier temps et pour y voir plus clair copies les fichiers
> que tu veux accéder dans ton media path.
> Si tu as défini ton media_path à :
> /home/user/monprojet/media
>
> Copies les fichiers qui sont contenus dans django/contrib/admin/media
> dans un dossier admin de ma manière à avoir :
> /home/user/monprojet/media
> /home/user/monprojet/media/admin
> /home/user/monprojet/media/admin/css/
> /home/user/monprojet/media/admin/js/
> etc...
>
> Si ça ne fonctionne pas c'est que ton media_path est mal défini...
>
> Enfin si tu développes en local il est courant d'ajouter dans tes
> urls :
>
> if settings.DEBUG:
>     urlpatterns += patterns('',
>         (r'^site-media/(?P<path>.*)$', 'django.views.static.serve',
> {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
>     )
>
> Ceci permet au serveur de développement de django de servir les média
> locaux.
>
> La doc évoque l'ensemble de ces points :
> http://docs.djangoproject.com/en/dev/howto/static-files/
>
> et un autre lien qui évoque plus précisèment ton problème:
> http://stackoverflow.com/questions/1788274/django-serving-admin-media-files
>
>
> On 20/09/2010 16:12, Tonton wrote:
> > Bonjour
> >
> > je m'essai a django mais je bute dans la doc media ou comment integrer les
> > javascript et css dans mon application .....
> >
> > la doc parle d'un fichier qui contiendrai
> >
> > class CalendarWidget(forms.TextInput):
> >     class Media:
> >         css = {
> >             'all': ('pretty.css',)
> >         }
> >         js = ('animations.js', 'actions.js')
> >
> > sans préciser quel fichier ou ni ou l'appeler
> > on doit pouvoir aussi creer sa class schemaWidgets ça semble bien fait
> >
> > dans settings.py on indique un media url et un path
> > mais ça ne rend pas ce path accessible dans l'application
> >
> > donc pour une bibliothèque javascript à appeler et ben je patauge ...
> >
> > si quelqu'un aurai une explication sur le fonctionnement pour le chemin et
> > les liens afin d'appeler un css et une bibliothèque js
> >
> > Merci
> >
> > Tonton
> >
> >
> > _______________________________________________
> > django mailing list
> > django _AT_ lists.afpy.org
> > http://lists.afpy.org/mailman/listinfo/django
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#5 20-09-2010 17:17:17

franck@netandco.net
Membre
Inscription : 11-08-2010
Messages : 8

Re : media et js

Tu peux également faire en sorte que tes settings spécifiques chargent
ton settings.py principal et lancer tes serveurs avec l'option
--settings, c'est moins spaghetti comme ça ;-)

On 20/09/2010 17:24, yohann wrote:
> La technique du if settings.DEBUG est intéressante mais je préfère faire
> un devel_settings et un production_settings cela à l'avantage d'être
> déporté sur deux fichiers, donc plus facile à lire et cela permet
> également de passer le site de prod en debug = True si besoin est.
>
> Voici la technique (pour ceux qui ne la connaisse pas et pardon pour ls
> autres) :
>
> ## dans le fichier settings.py, rajouter à la fin :
>
> try:
>      LOCAL_SETTINGS
> except NameError:
>      try:
>          from local_settings import *
>      except ImportError:
>          pass
>
> ##Sur la machine de développement dans un fichier local_settings.py
>
> LOCAL_SETTING= True
> from devel_settings import *
>
> ##Sur la machine en prod dans un fichier local_settings.py
>
> LOCAL_SETTING= True
> from production_settings import *
>
> et enfin, deux fichiers : devel_settings.py et production_settings.py
> qui commencent tout deux comme cela :
> import settings
>
> Dans settings.py tu met ce qui concerne aussi bien le serveur de prod et
> le serveur de dev.
> Dans production_settings.py tout ce qui concerne le site de prod,
> Dans devel_settings.py tout ce qui concerne le site en dev' donc pour
> reprendre l'exemple :
>
> urlpatterns += (r'^site-media/(?P<path>.*)$',
> 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT,
> 'show_indexes': True}),
>      ),
>
>
> Le lundi 20 septembre 2010 à 16:48 +0200, franck _AT_ netandco.net a écrit :
>> Bonjour
>> Dans un premier temps et pour y voir plus clair copies les fichiers
>> que tu veux accéder dans ton media path.
>> Si tu as défini ton media_path à :
>> /home/user/monprojet/media
>>
>> Copies les fichiers qui sont contenus dans django/contrib/admin/media
>> dans un dossier admin de ma manière à avoir :
>> /home/user/monprojet/media
>> /home/user/monprojet/media/admin
>> /home/user/monprojet/media/admin/css/
>> /home/user/monprojet/media/admin/js/
>> etc...
>>
>> Si ça ne fonctionne pas c'est que ton media_path est mal défini...
>>
>> Enfin si tu développes en local il est courant d'ajouter dans tes
>> urls :
>>
>> if settings.DEBUG:
>>      urlpatterns += patterns('',
>>          (r'^site-media/(?P<path>.*)$', 'django.views.static.serve',
>> {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
>>      )
>>
>> Ceci permet au serveur de développement de django de servir les média
>> locaux.
>>
>> La doc évoque l'ensemble de ces points :
>> http://docs.djangoproject.com/en/dev/howto/static-files/
>>
>> et un autre lien qui évoque plus précisèment ton problème:
>> http://stackoverflow.com/questions/1788274/django-serving-admin-media-files
>>
>>
>> On 20/09/2010 16:12, Tonton wrote:
>>> Bonjour
>>>
>>> je m'essai a django mais je bute dans la doc media ou comment integrer les
>>> javascript et css dans mon application .....
>>>
>>> la doc parle d'un fichier qui contiendrai
>>>
>>> class CalendarWidget(forms.TextInput):
>>>      class Media:
>>>          css = {
>>>              'all': ('pretty.css',)
>>>          }
>>>          js = ('animations.js', 'actions.js')
>>>
>>> sans préciser quel fichier ou ni ou l'appeler
>>> on doit pouvoir aussi creer sa class schemaWidgets ça semble bien fait
>>>
>>> dans settings.py on indique un media url et un path
>>> mais ça ne rend pas ce path accessible dans l'application
>>>
>>> donc pour une bibliothèque javascript à appeler et ben je patauge ...
>>>
>>> si quelqu'un aurai une explication sur le fonctionnement pour le chemin et
>>> les liens afin d'appeler un css et une bibliothèque js
>>>
>>> Merci
>>>
>>> Tonton
>>>
>>>
>>> _______________________________________________
>>> django mailing list
>>> django _AT_ lists.afpy.org
>>> http://lists.afpy.org/mailman/listinfo/django
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

Pied de page des forums