IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django : erreur 404 pour les fichiers statiques (STATICFILES_DIRS pourtant défini)


Sujet :

Django Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut Django : erreur 404 pour les fichiers statiques (STATICFILES_DIRS pourtant défini)
    Bonjour!

    Je commence à mettre en production un petit projet django.
    Il y a parfois quelques soucis ponctuels (erreur 500, apparemment quand je "réveille" le serveur notamment).
    Mais il y a une erreur que je n'arrive par à résoudre :
    Le code HTML de mes pages se charge, mais pas les fichiers statiques (notamment les fichier CSS). J'obtiens une erreur 404 pour ceux-ci.

    Voici l'arborescence (simplifiée) de mon projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /
        /my_project/
            /settings.py
            /wsgi.py
            /urls.py
            /__init__.py
        /my_app/
            /__init__.py
            /admin.py
            /models.py
            /tests.py
            /urls.py
            /views.py
        /templates/
            /main/
                /accueil.html
        /static/
            /style/
                /base_style.css
        /manage.py
    Voici mon settings.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    """
    Django settings for my_project project.
     
    For more information on this file, see
    https://docs.djangoproject.com/en/1.6/topics/settings/
     
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.6/ref/settings/
    """
     
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
     
    TEMPLATE_DIRS = (
        os.path.join(BASE_DIR, 'templates'),
    )
     
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
     
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '3i0me(6b+)i3ms$l=u6nd_2*!i#juil7%op5jm%=f_41y5v9#e'
     
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = False
     
    TEMPLATE_DEBUG = True
     
    ALLOWED_HOSTS = ['mon_site.fr', 'dev.mon_site.fr']
     
    # Admins :
     
    ADMINS = (
        ('admin', 'admin@mail.fr'),
    )
     
    # Application definition
     
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'my_app',
    )
     
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    )
     
    ROOT_URLCONF = 'soisbault.urls'
     
    WSGI_APPLICATION = 'my_project.wsgi.application'
     
     
    # Database
    # https://docs.djangoproject.com/en/1.6/ref/settings/#databases
     
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
     
    # Internationalization
    # https://docs.djangoproject.com/en/1.6/topics/i18n/
     
    LANGUAGE_CODE = 'en-us'
     
    TIME_ZONE = 'Europe/Paris'
     
    USE_I18N = True
     
    USE_L10N = True
     
    USE_TZ = True
     
     
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.6/howto/static-files/
     
    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
     
    APPEND_SLASH = True
    et les lignes concernées dans mon fichier html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {% load static %}
    <link rel="stylesheet" href="{% static 'style/base_style.css' %}" />
    Je précise que tout semble fonctionner normalement avec le serveur de test de django.

    Quelqu'un aurait une idée de la provenance du problème?
    Ça vient peut-être de STATICFILES_DIRS ou de BASE_DIR, mais je ne vois pas comment.
    Ça m'a pourtant l'air bon! :S

    Merci d'avance!

    EDIT :
    J'ajoute juste les logs d'accès du service httpd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    192.168.0.254 - - [04/Jul/2014:12:12:44 +0200] "GET /accueil/ HTTP/1.1" 200 1266
    192.168.0.254 - - [04/Jul/2014:12:12:44 +0200] "GET /static/style/base_style.css HTTP/1.1" 404 101

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Votre log httpd signale une erreur 404 not found sur /static/style/base_style.css : sous UNIX/LINUX, avez-vous vérifié les permissions de fichier de static/, style/ et base_style.css ?

    Si le serveur httpd n'a pas les droits d'accès en lecture -au minimum- sur ces dossiers/fichiers, il risque d'aboutir régulièrement sur des erreurs 404.

    @+.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Il y a les droits de lecture pour tous les fichiers, et dans le doute, j'ai fait un chmod 777 sur tous mais ça n'a rien arrangé.
    Par contre j'ai quelques soucis : une fois sur deux, sans changer une ligne de code ça me met un "TemplateDoesNotExist" alors que le template était atteint 2 secondes avant.

    Merci quand même!

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    https://docs.djangoproject.com/en/1....#serving-files

    Il se pourrait que j'aie un début de solution...

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Je reviens pour expliquer la solution que j'ai trouvée dans le lien du message précédent

    Django ne sert pas lui-même les fichiers tels que les fichiers statiques.
    Il a donc fallu que je configure Apache pour pouvoir les servir.
    Il m'a suffi de reprendre la configuration donnée en exemple sans trop avoir à me casser la tête.

    Merci encore!

  6. #6
    Invité
    Invité(e)
    Par défaut
    OK, vu. C'est bon à savoir, ça.

    @+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/05/2012, 14h47
  2. Réponses: 4
    Dernier message: 25/11/2011, 09h32
  3. Utiliser l'Apache frontal pour les fichiers statiques
    Par kilicool dans le forum Apache
    Réponses: 3
    Dernier message: 28/01/2010, 15h37
  4. Réponses: 1
    Dernier message: 29/11/2008, 10h01
  5. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo