Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Django] TemplateDoesNotExist

Sujet résolu
    12 avril 2016 à 14:52:39

    Bonjour,

    Je chipote un peu a Django depuis quelques jours et voila que je tombe enfin sur mon premier problème ou je ne trouve pas de solution!

    Mon debuger me dit qu'il ne trouve pas base.html (alors qu'il est a la racine de mon projet) et quand on regarde de plus près, django cherche base.html partout sauf a ou il faut...

    Arbre de fichiers: (j'ai volontairement omis tout ce qui n'est pas important pour mon problème)

    PROJET
    --App
    ----Static
    ----Templates
    ------App
    --------Article.html
    --Projet
    --Static
    --Templates
    ----Base.html

    Message d'erreur:

    TemplateDoesNotExist at /app/
    base.html
    Request Method:	GET
    Request URL:	http://localhost:8000/app/
    Django Version:	1.9.5
    Exception Type:	TemplateDoesNotExist
    Exception Value:	
    base.html
    Exception Location:	C:\Program Files (x86)\Python 3\lib\site-packages\django\template\engine.py in find_template, line 169
    Python Executable:	C:\Program Files (x86)\Python 3\python.EXE
    Python Version:	3.4.3
    Python Path:	
    ['D:\\Documents\\Mes_Projets\\django_website',
     'C:\\WINDOWS\\SYSTEM32\\python34.zip',
     'C:\\Program Files (x86)\\Python 3\\DLLs',
     'C:\\Program Files (x86)\\Python 3\\lib',
     'C:\\Program Files (x86)\\Python 3',
     'C:\\Program Files (x86)\\Python 3\\lib\\site-packages']
    
    Template-loader postmortem
    
    Django tried loading these templates, in this order:
    
    Using engine django:
    django.template.loaders.app_directories.Loader: C:\Program Files (x86)\Python 3\lib\site-packages\django\contrib\admin\templates\base.html (Source does not exist)
    django.template.loaders.app_directories.Loader: C:\Program Files (x86)\Python 3\lib\site-packages\django\contrib\auth\templates\base.html (Source does not exist)
    django.template.loaders.app_directories.Loader: D:\Documents\Mes_Projets\django_website\app\templates\base.html (Source does not exist)

    Mon fichier article.html:

    {% extends "base.html" %}

    Partie de mon fichier settings.py:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    TEMPLATE_LOADERS = (
    	'django.template.loaders.filesystem.Loader',
    	'django.template.loaders.app_directories.Loader',
    )
    
    TEMPLATE_DIRS = (
    	os.path.join(BASE_DIR, 'templates'),
    )



    Voila en espérant que quelqu'un a une idée pour m'aider... Moi j'ai parcouru toute la doc de Django sur les templates mais j'ai rien trouvé :(

    • Partager sur Facebook
    • Partager sur Twitter
    Touche a tout, nul en tout
      12 avril 2016 à 16:02:50

      dans ton setting.py tu peux essayais ça de rajouter
      os.path.join(BASE_DIR, "templates")

       comme cela :

      TEMPLATES = [
          {
              'BACKEND': 'django.template.backends.django.DjangoTemplates',
              'DIRS': [os.path.join(BASE_DIR, "templates")],
              'APP_DIRS': True,
              'OPTIONS': {
                  'context_processors': [
                      'django.template.context_processors.debug',
                      'django.template.context_processors.request',
                      'django.contrib.auth.context_processors.auth',
                      'django.contrib.messages.context_processors.messages',
                  ],
              },
          },
      ]

       Tu peux aussi essayais de mettre directement le path comme ça

      TEMPLATE_DIRS = (
        '/home/django/myproject/templates',
      )

      -
      Edité par Myrens 12 avril 2016 à 16:10:23

      • Partager sur Facebook
      • Partager sur Twitter
        12 avril 2016 à 16:45:29

        Bonsoir,

        Merci de ta réponse. La solution que tu me propose a marché, pourtant je ne l'ai pas vu ailleurs sur le web donc je suis un peu surpris!

        Tout le monde dit de mettre le path dans TEMPLATE_DIRS (ce que j'ai essayé) mais personne ne propose de mettre directement le path dans le dictionnaire TEMPLATES.

        Donc merci :) 

        • Partager sur Facebook
        • Partager sur Twitter
        Touche a tout, nul en tout
          8 février 2017 à 22:25:34

          Merci pour la solution

          TEMPLATE_DIRS = (
          '/home/django/myproject/templates',
          )
          ça fonctionne pour Python 2.7 et Django 1.7
          thx!
          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2017 à 1:34:24

            Bonsoir, je n'ai pas TEMPLATE_DIRS dans setting.py (j'ai Python 3.6 et Django 1.11.1) qu'est-ce que je dois faire svp?
            • Partager sur Facebook
            • Partager sur Twitter

            [Django] TemplateDoesNotExist

            × 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