Partage
  • Partager sur Facebook
  • Partager sur Twitter

Importation

Sujet résolu
    5 avril 2020 à 12:32:31

    Hello

    Je bloque, peut-être bêtement, sur un sujet d'importation. J'ai créé un projet Django. Je suis le cours https://openclassrooms.com/fr/courses/1871271-developpez-votre-site-web-avec-le-framework-django/1871890-votre-premiere-page-grace-aux-vues

    J'ai l'arborescence suivante :

    > crepes-bretonnes

         >> manage.py

         >> crepes-bretonnes

            >>> urls.py

         >> blog

            >>> views.py

    from django.urls import path
    from blog import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('accueil', views.home),
    ]



     Le code précédent fonctionne très bien, c'est l'exemple d'OpenClassrooms. De mon côté j'avais écrit :

    from django.urls import path
    import blog
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('accueil', blog.views.home),
    ]

    J'avais uniquement importé le répertoire 'blog' et je fais appel ensuite à la fonction home via le chemin blog.views.home

    Cependant, j'ai une erreur AttributeError: module 'blog' has no attribute 'views'

    Pouvez-vous m'expliquer pourquoi ça ne fonctionne pas ? Quelle est la différence avec la solution qui fonctionne ?

    Merci beaucoup

    Melvin

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2020 à 12:38:01

      Est-ce que tu as bien ajouté blog dans ta liste d'applications dans le fichier settings.py ?

      EDIT: N'oublie pas non plus d'ajouter à la fin de ton URL le '/' c'est important

      -
      Edité par fred1599 5 avril 2020 à 12:39:41

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        5 avril 2020 à 16:15:39

        Oui j'ai bien ajouté 'blog' dans la variable INSTALLED_APPS du fichier settings.py

        Une idée du pourquoi ça ne fonctionne pas ? 

        Bien noté pour le slash à la fin de l'URL :)

        Merci à toi

        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2020 à 16:53:46

          Si tu fais from blog.views import home et que tu mets home dans ton path à la place de blog.views.home, ça donne quoi ?

          Ton application a bien été créé dans les règles de l'art ? avec python manage.py startapp blog ?

          -
          Edité par fred1599 5 avril 2020 à 16:55:04

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            5 avril 2020 à 17:20:41

            Oui tout a été bien fait je pense

            J'ai finalement écrit le code ci-dessous et ça fonctionne. Cependant je ne comprends toujours pas pourquoi "import blog" tout court et ensuite un appel "blog.views.home" ne fonctionne pas. Il n'est peut-être pas possible d'importer un répertoire uniquement ? Il faut forcément importer des scripts/fichiers ? Où alors faire un from <répertoire> import <script>. Par script j'entends un module.

            from django.contrib import admin
            from django.urls import path
            import blog.views
            
            urlpatterns = [
                path('admin/', admin.site.urls),
                path('blog/', blog.views.home),
            ]



            • Partager sur Facebook
            • Partager sur Twitter
              5 avril 2020 à 17:24:46

              Ce n'est pas un répertoire c'est un package... toute façon ce n'est pas la bonne méthode à appliquer !

              vaudrait mieux que tu fasses un include('blog.urls') dans ton path et que tu ajoutes ton module urls.py dans ton package blog.

              Tu le verras sans doute après.

              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                5 avril 2020 à 19:07:43

                Yes j'ai vu ça dans la suite du cours :) 

                Merci pour ton aide !

                Melvin

                • Partager sur Facebook
                • Partager sur Twitter

                Importation

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown