Django-fr

Forum

#1 07-04-2015 03:47:18

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Impossible d'afficher les fichiers statiques

Bonjour à vous,

J'ai jamais eu de problème avant, concernant les fichiers statiques. Tout le site s'affiche, mais aucun css, image..
J'ai que recopier mon dossier sauvegarder ( qui fonctionnait bien avant ).

settings.py

STATIC_ROOT = '/home/myname/www/mysite/public/site_static/'

STATIC_URL = '/static/'

INSTALLED_APPS = (
'django.contrib.staticfiles',
)

Tout mes fichiers statiques sont dans le même dossier ( public/site_static/css/style.css  , public/site_static/images/image1.jpg ...)
Normallement j'avais qu'à écrire au début de ma page principale.. ( site_base.html )

<link rel="stylesheet" type="text/css" href="/site_static/css/style.css">

j'ai essayer aussi

{% load staticfiles %}
<href="{% static "css/style.css" %}">

Il ne semble rien trouver, du tout. Malheureusement, je reçois aucune erreur pouvant m'aider. Même pas d'erreur 401, 404, 501

Que je devrais faire?

Dois-je créer une sous-dossier static, pour chaque application installé? Sachant que j'ai seulement besoin de 3 images et un style.css pour tout le site.
Avec : STATICFILES_DIRS =

en localhost, tout s'affiche..

Merci de m'aider.

Hors ligne

#2 07-04-2015 10:05:31

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Impossible d'afficher les fichiers statiques

La bonne solution est de définir le STATICFILES_DIRS = [dir1, dir2, dir3] et d'utiliser le tag static dans les templates.

Hors ligne

#3 07-04-2015 17:21:21

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Re : Impossible d'afficher les fichiers statiques

merci pour ta réponse.

Que dois-je écrire dans STATIC_ROOT ? Puisqu'il me le demande.

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
#STATIC_ROOT = '/home/myname/www/mysite/public/static/'

# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    '/home/myname/www/mysite/public/static/'
)
./manage.py collectstatic
    raise ImproperlyConfigured("You're using the staticfiles app "
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.

Donc, en résumé, je dois avoir un STATIC_ROOT ( surment le principale donc, /home/myname/www/mysite/public/statics)
ainsi que STATICFILES_DIRS, pour chaque sous-prépertoire static/ de chaque application?
ex: /home/myname/www/mysite/ ...acceuil/static..

De plus, je ne peux pas mettre le même STATIC_ROOT et STATICFILE_DIRS, identique.... ils doivent être différent.

Je comprend pas pourquoi.... J'ai qu'un seul fichier .css pour tout le site..
Dois-je recopier le .css pour chaque sous-répertoire.. Si je prend EXAMPLE sur n'importe quel site web. Tous les sites web ont les mêmes couleurs,formes sur chaque page.. il utilise tous 10,000 copies du même fichier (admettons style.css )? C'est absurde non?
Je peux comprendre, pour les photos, les vidéos, ( bref les médias )... mais les statics.. ils sont justement statique non?

Merci de m'aider.

Dernière modification par nolimitech (07-04-2015 17:27:58)

Hors ligne

#4 08-04-2015 20:56:49

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Impossible d'afficher les fichiers statiques

Il te manque la virgule pour indiquer qu'il s'agit d'une liste: les parenthèses simples () ne sont pas une liste ce qui fait que ('toto') est pareil que 'toto'
Il faut préciser ('toto',)

Hors ligne

#5 08-04-2015 20:57:18

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : Impossible d'afficher les fichiers statiques

il faut également positionner le STATIC_ROOT

Hors ligne

#6 11-04-2015 19:38:22

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Re : Impossible d'afficher les fichiers statiques

Salut et merci.

Oui pour le point virgule, c'est en écrivant ici que j'ai dû l'enlever par erreur.

Je crois que je viens de comprendre que c'est tout ma structure qui est en défaut.

Tout mes templates sont dans un dossier, ainsi que mes statiques et médias.

Il ne sont pas dans chaque application.

C'est-à-dire que j'ai :

  • my site/

    1. acceuil/

    2. contact/

    3. templates/

      1. acceuil/

      2. contact/

      3. base.html

    4. mysite

      1. settings.py

      2. urls.py

    5. public

      1. media/

      2. static/

      3. django.fcgi

      4. .htaccess

    6. manage.py

Je trouvais que ma manière était moins copier/coller  ( les templates et les statics ) surtout s'ils sont identiques. Comme les .css et les images.
Je vais donc, tout modifié pour avoir, dans chaque application;

  • un dossier template/

  • un dossier static/

Mais, le STATIC_ROOT devient quoi? Je veux dire, qu'une fois que j'ai mis chaque dossier statique dans chaque application. Je n'ai plus de root.. ( dossier principale comme j'avais dans mon arborescence.. )
Pas grave, c'est déjà une début.
Je vais essayer, merci beaucoup

Merci pour ton aide big_smile

Hors ligne

#7 12-04-2015 17:37:55

nolimitech
Membre
Inscription : 11-02-2015
Messages : 14

Re : Impossible d'afficher les fichiers statiques

Rebonjour,

Je tiens à vous dire, que mon hébergeur est alwaysdata. lorsque j'étais en local, tout fonctionnait. Sur AlwaysData aussi, mais tout à commencer à se mélanger à force d'installer des modules.
J'avais donc, une copie.. c'est lorsque j'ai voulu mettre la copie de sauvegarde, que mes fichiers statiques n'ont plus fonctionné. C'est depuis ce temps, que je ne peux plus rien faire.
Bref..

J'ai tout modifié. Voici mon arboresecence:

http://www.hostingpics.net/viewer.php?id=324842arb2.jpg
Arborescence

Voici mon settings.

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)).replace('\\','/')

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('\\','/')

STATIC_URL = '/static/'#if DEBUG else 'http://mysite.alwaysdata.net/static/'

STATICFILES_DIRS = (
    'public/static/',
)

# Templates files
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates').replace('\\','/'),
    '~/www/mysite/templates/',
)

Lors du : ./manage collectstatic, il crée un fichier static avec tous les fichiers.. se qui est très bien.

Mais il ne lit toujours pas les statiques. Peu importe le chemin que j'essaie.

<img src="{% static "acceuil/acceuil.png" %}" alt="acceuil"" title="Acceuil">
<link rel="stylesheet" type="text/css" href="{% static "css/style.css"%}">

Pourtant je vois ( dans le code source ), que le static est devenu static/acceuil/acceuil.png... mais il ne lis rien.

Je ne comprend plus rien.
Je comprend le language python, je comprend les bases de django, j'avais un site qui fonctionnait avant.. et là plus rien.

Tout le site fonctionne, mais sans forme, ni image.

Es-ce que les statiques fonctionnent sans urls.py? C'est-à-dire, que lorsque je clique sur: www.my-site.com/static   ( /static/css/style.css ), il m'affiche un erreur 404 ( Page not found )
en mode DEBUG, il devrait y avoir tout la listes des statics, non?
/static/

Quel erreur....

Merci de m'aider.. Je suis complètement perdu là. wink

Dernière modification par nolimitech (12-04-2015 17:39:49)

Hors ligne

Pied de page des forums