Django “TemplateDoesNotExist d'Erreur”, mais “à l'Aide du chargeur de django.de modèle.les chargeurs.app_directories.Chargeur” Le Fichier Existe Déjà
Modèle de Chargeur trouve le modèle, mais le modèle n'est pas chargé
TemplateDoesNotExist at /cardpayment/
cardpayment.html
Request Method: GET
Request URL: http://localhost:7000/cardpayment/
Django Version: 1.8
Exception Type: TemplateDoesNotExist
Exception Value:
cardpayment.html
Exception Location: /home/sdr/sl/lib/python3.4/site-packages/django/template/loader.py in render_to_string, line 138
Python Executable: /home/sdr/sl/bin/python
Python Version: 3.4.3
Python Path:
['/home/sdr/sl/agryp',
'/home/sdr/pycharm-4.0.6/helpers/pydev',
'/home/sdr/sl/src/tastypie',
'/home/sdr/sl/agryp',
'/usr/local/lib/python34.zip',
'/usr/local/lib/python3.4',
'/usr/local/lib/python3.4/plat-linux',
'/usr/local/lib/python3.4/lib-dynload',
'/home/sdr/sl/lib/python3.4/site-packages']
Server time: Tue, 5 May 2015 10:17:40 +0000
Template-loader postmortem
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
/home/sdr/sl/agryp/templates/cardpayment.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
/home/sdr/sl/agryp/agryp/templates/cardpayment.html (File exists) <=========== FILE EXISTS BUT NOT LOADED
/home/sdr/sl/src/tastypie/tastypie/templates/cardpayment.html (File does not exist)
/home/sdr/sl/lib/python3.4/site-packages/grappelli/templates/cardpayment.html (File does not exist)
/home/sdr/sl/lib/python3.4/site-packages/django/contrib/admin/templates/cardpayment.html (File does not exist)
/home/sdr/sl/lib/python3.4/site-packages/django/contrib/auth/templates/cardpayment.html (File does not exist)
/home/sdr/sl/lib/python3.4/site-packages/oauth2_provider/templates/cardpayment.html (File does not exist)
/home/sdr/sl/lib/python3.4/site-packages/selectable/templates/cardpayment.html (File does not exist)
Comme il peut être clairement vu, le chargeur est capable de trouver le modèle.
La TEMPLATE_DIRS valeur dans settings.py est comme suit:
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',
'allauth.account.context_processors.account',
'allauth.socialaccount.context_processors.socialaccount',
],
},
},
]
J'ai essayé de déplacer le modèle de projet/répertoire des modèles, mais l'erreur persiste.
Code vérifie avec 0 erreurs/avertissements.
contenu de cardpayment.html
{% extends "base.html" %}
{% block title %}Card Payments over Phone{% endblock %}
{% block extrahead %}
{% load selectable_tags %}
{% include_ui_theme %}
{% endblock %}
{% block content %}
<h1>Receive Card Payment</h1>
<form name="paymentType" id="paymentType" class="form-horizontal">
<fieldset>
<label>Check type of Customer
<input type="radio" value="existing">Existing Customer<br />
<input type="radio" value="new">Nee Customer<br />
</label>
</fieldset>
</form>
<div class="row">
<form class="form-horizontal">
<table class="table-responsive table-bordered">
{{ form.as_table }}
</table>
</form>
</div>
{% endblock %}
Ce que le chemin de cardpayment.html?
/home/sdr/sl/agryp/agryp/templates/cardpayment.html (le Fichier existe) BASE_DIR est ~/sl/agryp, agryp est le répertoire app.
Veuillez vérifier les permissions de ce fichier, il peut être que si le fichier existe, Django ne pouvez pas obtenir l'accès en lecture pour elle
La première chose que j'ai vérifié. Propriété du fichier est de l'utilisateur 'dts', django est en cours d'exécution sous le même utilisateur (runserver) et j'ai fait un chmod a+r sur le fichier juste pour être sûr, et bien sûr, étant sous le répertoire app django a toutes les autorisations. En fait le django de modèle du chargeur * ne * ** trouver le modèle, mais ne le charge pas.
Poste le contenu de cardpayment.html
/home/sdr/sl/agryp/agryp/templates/cardpayment.html (le Fichier existe) BASE_DIR est ~/sl/agryp, agryp est le répertoire app.
Veuillez vérifier les permissions de ce fichier, il peut être que si le fichier existe, Django ne pouvez pas obtenir l'accès en lecture pour elle
La première chose que j'ai vérifié. Propriété du fichier est de l'utilisateur 'dts', django est en cours d'exécution sous le même utilisateur (runserver) et j'ai fait un chmod a+r sur le fichier juste pour être sûr, et bien sûr, étant sous le répertoire app django a toutes les autorisations. En fait le django de modèle du chargeur * ne * ** trouver le modèle, mais ne le charge pas.
Poste le contenu de cardpayment.html
OriginalL'auteur b-rat | 2015-05-05
Vous devez vous connecter pour publier un commentaire.
j'ai été en cours d'exécution dans le même problème, la solution de ce travail était de préciser mon répertoire de modèle (projets/modèles) modèles, les paramètres comme ceci:
]
OriginalL'auteur Ours
Je suis également en utilisant le
DIRS
option de configuration dans une manière semblable à vous et je viens de lancer sur le même problème dans Django 1.8.2. Le problème semble se rapporter à la façon dont vous appelezdjango.shortcuts.render
(oudjango.shortcuts.render_to_response
) dans vos points de vue - les utilisez-vous?TL;DR - essayez de changer votre invocation de
render_to_response
dans vos points de vue afin que vous ne passez pas d'uncontext_instance
ou tout obsolète argument, comme précédemment, souvent utilisédjango.template.RequestContext
. Si vous ne passer uncontext_instance
, ou tout obsolète argument, le django modèle de code de chargement utilise un héritage chemin qui ne prend pas en charge laDIRS
option et votre modèle ne sera pas chargé - même si elle existe sur le disque.Voici un article du code de l'Django source (
django/shortcuts.py
) qui montre comment cette situation vient à propos:Si vous suivez ce grâce au chargeur de
render_to_string
méthode (dansdjango/template/loader.py
) vous pouvez voir votre modèle ne sera pas chargé si vous passez des obsolète arguments pourrender_to_reponse
dans vos vues:OriginalL'auteur djb
TemplateDoesNotExist... cardpayment.html
pourrait signifier Django ne pouvez pas trouvercardpayment.html
, ou il pourrait dire qu'il peut trouver cardpayment.html pas de problème, mais ne pouvez pas trouver certains{% include 'cardpayment_subsection.html' %}
.Explication:
J'ai eu cette erreur tout à l'heure, dans un projet qui est des années de travail, et de l'autre des solutions ne m'a pas aidé.
Mon
cardpayment.html
était être trouvé par les chargeurs de modèle, mais contenait des bêtises ce qui signifiait qu'il ne pouvait pas être rendue.Les messages d'erreur me tromper en pensant que Django ne savais pas que le fichier existe, alors qu'en fait, elle savait qu'elle existait, ne pouvait tout simplement pas réussi à le rendre.
Pour un alors que tout fonctionnait bien:
cardpayment.html
a été rendue sans problème.views.py
Soudainement, même si je n'avais pas été d'édition
cardpayment.html
, j'ai eu cette erreur:TemplateDoesNotExist /cardpaymentpage:
cardpayment.html
Le problème a été que mon
cardpayment.html
a uninclude
appeler un autre modèle:J'ai créé l'erreur en de renommer le fichier
cardpayment_subsection.html
àsomething_else.html
, sans retouchecardpayment.html
, de sorte queinclude
commande naturellement échoué.Mais comme vous pouvez le voir, le message de débogage ne pas indiquer le problème a été callling la
cardpayment_subsection.html
(fichier n'existe plus).Résumé: si d'autres solutions ne fonctionnent pas pour vous, essayez de créer un fichier de test
cardpayment2.html
qui dit simplement "Bonjour le monde" et voir si vous pouvez au moins de rendre à la place. Peut-être que lecardpayment.html
fichier est lu, mais a une erreur. (Dans mon cas, j'avais besoin de changer la{% include '____.html' %}
pour faire référence à un fichier qui existe vraiment!)OriginalL'auteur Mark
Trouvé une solution. Je ne suis pas sûr pourquoi, mais les nouveaux MODÈLES de la directive (Django 1.8+) ne semble pas fonctionner. J'ai commenté que et de les mettre dans le style ancien
directive, tout a commencé à travailler à nouveau. ARGH!
Aurez besoin de savoir pourquoi les nouveaux MODÈLES de la directive est de me causer des problèmes.
Merci pour essayer d'aider les gars!
votre suggestion est résolu! je vous remercie beaucoup. vous pouvez ajouter votre suggestion comme une réponse à la question
OriginalL'auteur b-rat