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 :

Porble d'incluse un fichier css/js/img


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut Porble d'incluse un fichier css/js/img
    bonjour,

    Je débute avec python et j'ai essayer d'avancer petit à petit.

    j'ai un projet structuré de cette maniere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    -/ mon_projet
        |- urls.py
        |- settings.py
        |- views.py
        |-/ templates
             |- base.html
        |-/ site-media
             |-/ css
                  |- style.css
             |-/ js
                  |- script.js
             |- img
    Dans le module mon_projet.views.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    from django.shortcuts import render_to_response, get_object_or_404
     
    def base(request):
        return render_to_response('base.html')
    Dans le module mon_projet.urls.py je fais un pattern pour servir mes fichiers statiques et ma vue base.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    urlpatterns = patterns('',
        (r'^base/$', base),
        (r'media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root':'/home/.../sitedjango/media/'}),
    )
    Je crée un template de base, base.html dans templates dans lequelle est inclus un css via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <link rel="stylesheet" href="site-media/css/style.css" />

    Je pointe mon navigateur sur http://127.0.0.1:8000/base => c'est ok, la page apparaît, mais le css n'est pas appliqué

    Avez-vous des conseils à me donner pour la bonne organisation de mon projet et pour que le css soit bien appliqué ?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 61
    Par défaut
    c bon c résolue.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 22
    Par défaut
    Heu ... et c'était quoi ton problème ?
    Expliciter son expérience peut aider des gens ayant les mêmes difficultés (moi par exemple )

  4. #4
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Allez, je fais un pronostic !!

    1) Il demande un fichier qui se trouve dans site-media (href="site-media/css/style.css") et il sert en statique pour l'adresse media.

    2) D'autre part, href = "site-media" demande un fichier css relatif à l'adresse url en cours, ca marche sur la page d'accueil mais ca ne fonctionneras pas sur les sous-pages.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Par défaut
    J'ai essayé de suivre et de faire de même en ajoutant dans le fichier url.py :

    (r'media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':'C:/django/monsite/site-media'})

    Mais il m'affiche toujours cette erreur lorsque j'essaye d'accéder au dossier ou au fichier : http://127.0.0.1:8000/media/css/test.css

    Permission denied: C:\Python26\lib\site-packages\django/contrib/admin/media\

    On dirait qu'il ne prend pas en compte ma modification dans le fichier url.py

    Comment as tu résolues le problème ?

  6. #6
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    Déjà le message Permission denied = Permission refusé, c'est étonnant vu. Il semblerait que l'utilisateur n'ai pas le droit de lire ce dossier.

    Exécutes tu django avec un utilisateur qui à des droits réduit sur ce dossier ? Pour vérifier essayes de lire manuellement ce dossier par l'explorateur windows.


    D'autre part, vu le message, il semble bien que ta modification ne soit pas prise en charge. Dans quel fichier urls.py a tu fais cette modification. Est-ce bien celui qui est dans le dossier principal de ton application, le dossier qui contient settings.py ?

    D'autre part il est préférable de rajouter un ^ devant l'expression régulière (pas essayé sans il faut dire). Le ^ correspond au début de l'url.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':'C:/django/monsite/site-media'}),
    Dernier test, si tu tapes dans le browser une url qui n'existe pas et que le mode DEBUG est bien activé dans ton settings.py , il devait te donner la liste complète des urls qu'il a essayé, vérifie que media apparait bien dans cette liste.

    Exemple de page de debug quand il ne trouve pas une url, il indique ici toutes les regexp essayés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Using the URLconf defined in amiweb.urls, Django tried these URL patterns, in this order:
     
       1. ^contact/
       2. ^admin/filebrowser/
       3. ^admin/doc/
       4. ^admin/(.*)
       5. ^app_media/(?P<path>.*)$
       6. ^files/(?P<path>.*)$
       7. ^assets/(?P<path>.*)$
       8. ^news/
       9. ^ page/(?P<page>[\-\w]+)/$
      10. ^ ^$
     
    The current URL, toto/, didn't match any of these.
    P.S. : Dernière chose, la prochaine fois, ouvres un nouveau sujet pour une nouvelle question

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

Discussions similaires

  1. [Débutant] Fichiers CSS non inclus pour les invités
    Par Redbass dans le forum ASP.NET
    Réponses: 2
    Dernier message: 06/09/2013, 23h39
  2. Réponses: 4
    Dernier message: 26/08/2010, 12h29
  3. Inclusion de fichier CSS dans une page jsp
    Par delob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 15/01/2008, 01h33
  4. Réponses: 2
    Dernier message: 10/01/2008, 09h37
  5. Inclusion de fichiers en IDL
    Par babou dans le forum CORBA
    Réponses: 10
    Dernier message: 30/07/2002, 16h47

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