Django-fr

Forum

#1 31-10-2010 15:09:29

christophetd
Membre
Inscription : 30-10-2010
Messages : 8

Fichiers statiques innacessibles

Bonjour, c'est encore moi ! ^^

J'ai un problème avec mes fichiers statiques, qui théoriquement devraient bien s'afficher.

Dans mon views.py, j'ai bien mon :

from django.contrib import staticfiles

Dans urls.py :

# Début de mon fichier
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

Dans mon settings.py :

STATICFILES_ROOT = '/home/christophetd/www/tests/django/meetmyband/static' # J'ai vérifié, le dossier existe bien.
STATICFILES_URL = '/static/'

J'ai mis un fichier de test dans /home/christophetd/www/tests/django/meetmyband/static/images/, puis ai fait un python manage.py collectstatic.

Dans le template dans lequel je veux afficher l'image, j'ai ceci :

<img alt="Avatar" src="{{ STATICFILES_URL }}images/avatar.jpg" />

Le rendu HTML est le suivant :

<img alt="Avatar" src="/static/images/avatar.jpg" />

Apparemment normal donc, mais l'image ne s'affiche pas !

J'ai essayé de contourner le problème en redirigeant /static/images/* vers une fonction qui elle redirigerait vers l'image, mais bon, c'est foireux et ça ne marche pas. Si quelqu'un peut m'aider, je prends !


[Edit] Je précise, au cas où, que j'indique bien le contexte lors du rendu de mon template :

return render_to_response('tpl.html', {
        'foo': bar, 
    }, 
     context_instance=RequestContext(request))

Dernière modification par christophetd (31-10-2010 15:12:06)

Hors ligne

#2 31-10-2010 15:37:08

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : Fichiers statiques innacessibles

Je ne connais pas ce module de staticfiles. Il a l'air pas mal
Jusqu'à présent j'utilisais cette méthode :

Je definisais MEDIA_URL et MEDIA_ROOT dans mon fichier settings.py

Et dans le fichier ulrs.pu j'ajoutais à la liste des patterns :

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

Ainsi dans le répertoire /medias/ j'ai mes fichiers.

Peux-tu essayer d'ouvrir ton fichier /static/images/avatar.jpg pour voir le message d'erreur que tu obtiens ?
Si c'est une erreur 404, tu auras la liste des URLS possible.

Ce que tu peux tester aussi c'est de mettre ces deux lignes :

# Début de mon fichier
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

À la fin de ton fichier et non au début car là tu écrases urlspatterns avec tes nouvelles pattern définie juste avant.

Hors ligne

#3 31-10-2010 20:00:21

Jérémie Ducastel
Membre
Inscription : 11-08-2010
Messages : 16

Re : Fichiers statiques innacessibles

staticfiles est une contrib intégrée dans 1.3 je crois (ou la dev ?), mais je ne l'ai pas encore testée...



Le 31 oct. 2010 à 15:37, Rémy HUBSCHER <hubscher.remy _AT_ gmail.com> a écrit :

> Je ne connais pas ce module de staticfiles. Il a l'air pas mal
> Jusqu'à présent j'utilisais cette méthode :
>
> Je definisais MEDIA_URL et MEDIA_ROOT dans mon fichier settings.py
>
> Et dans le fichier ulrs.pu j'ajoutais à la liste des patterns :
>
>

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

>
> Ainsi dans le répertoire /medias/ j'ai mes fichiers.
>
> Peux-tu essayer d'ouvrir ton fichier /static/images/avatar.jpg pour voir
> le message d'erreur que tu obtiens ?
> Si c'est une erreur 404, tu auras la liste des URLS possible.
>
> Ce que tu peux tester aussi c'est de mettre ces deux lignes :
>
>

# Début de mon fichier
> from django.contrib.staticfiles.urls import staticfiles_urlpatterns
> urlpatterns += staticfiles_urlpatterns()

>
> À la fin de ton fichier et non au début car là tu écrases urlspatterns
> avec tes nouvelles pattern définie juste avant.
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

Pied de page des forums