Django: Impossible de charger le template tags
Je suis en utilisant Django 1.2.1 et je vais avoir des problèmes en essayant de charger mon
modèle tags:
{% load mytags %}
TemplateSyntaxError at /myapp/
'mytags' is not a valid tag library: Template library mytags not
found, tried django.templatetags.mytags
Il est défini dans myproject/myapp/templatetags/mytags.py
.
nate@nate-desktop:~/work/django-projects/myproject$ ls myapp/templatetags/
mytags.py __init.py__
nate@nate-desktop:~/work/django-projects/myproject$ more
myapp/templatetags/mytags.py
from django import template
register = template.Library()
@register.simple_tag
def myclass(request):
return request.path
J'ai ajouté 'myapp' à INSTALLED_APPS
, et mis à jour TEMPLATE_LOADERS
(comme
par une suggestion de StackOverflow):
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
'django.template.loaders.eggs.Loader',
'django.template.loaders.app_directories.load_template_source',
)
Quand je lance le serveur, je vois ce message d'avertissement:
/usr/local/lib/python2.6/dist-packages/django/template/loaders/eggs.py:4:
UserWarning: Module _mysql was already imported from
/usr/lib/pymodules/python2.6/_mysql.so, but
/usr/lib/pymodules/python2.6 is being added to sys.path
Lorsque j'essaie d'importer mon module dans le shell moi aussi, je suis incapable de les importer:
>>> from django.templatetags import mytags
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: cannot import name mytags
>>> from myapp.templatetags import mytags
Traceback (most recent call last):
File "<console>", line 1, in <module>
ImportError: No module named templatetags
Est-ce à dire quelque chose de mal avec mon chemin ou de configuration? Des idées?
- Avez-vous aussi un
__init__.py
dans lemyapp
répertoire? - Bonne question. Oui, je fais: nate@nate-desktop:~/work/django-projets/myproject$ ls myapp/ init.py models.py templatetags views.py init.pyc modèles.pyc tests.py les vues.pyc
- J'ai de la difficulté à entrer dans la sortie de 'ls'. Les traits de soulignement est converti dans le texte en caractères gras. Elle doit montrer le double trait de soulignement init.py double trait de soulignement.
Vous devez vous connecter pour publier un commentaire.
Une note pour les autres qui courent en ceci: vous devez redémarrer le serveur de développement pour l'enregistrement des nouveaux fichiers dans votre django app.
Mon problème était dû à une faute de frappe. J'ai appelé le fichier dans templatetags
__init.py__
mais il aurait été nommé__init__.py
.J'ai eu le même problème. Le problème était que j'étais partagée
templatetags
répertoire, et qui n'ont pas le__init__.py
en elle. Ajouté que fichier vide dans, redémarré le serveur, et tout allait bien.