Django 1.10.1 'my_templatetag' n'est pas une bibliothèque de balises enregistrée. Doit être l'un de:
Je veux un menu c'est personnalisée en fonction du groupe auquel vous êtes membre de.
Im en utilisant Django 1.10.1, allauth et ainsi de suite.
Quand j'essaie de faire de mon templatetag il échoue et il dit:
TemplateSyntaxError at /
'my_templatetag' is not a registered tag library. Must be one of:
account
account_tags
admin_list
admin_modify
admin_static
admin_urls
cache
i18n
l10n
log
socialaccount
socialaccount_tags
static
staticfiles
tz
'my_templatetag.py' ressemble à ceci:
from django import template
from django.contrib.auth.models import Group
register = template.Library()
@register.filter(name='has_group')
def has_group(user, group_name):
group = Group.objects.get(name=group_name)
return group in user.groups.all()
et tha erreur vient dans mon .fichier html qui disent,
{% load my_templatetag %}
J'ai essayé de redémarrer le serveur comme des millions de fois, aussi j'ai essayé de changer tous les noms, et que l'application est une partie de INSTALLED_APPS dans settings.py.
Ce que je fais mal?
source d'informationauteur Sliljedal
Vous devez vous connecter pour publier un commentaire.
Outre mettre
my_templatetag.py
à l'intérieur deapp_name/templatetags
assurez-vous de redémarrer le serveur de développement de Django (ou de s'assurer qu'il redémarré lui-même) à chaque fois que vous modifiez le modèle des balises. Si le serveur ne redémarre pas, Django n'enregistre pas les balises.De django 1.9, vous pouvez charger ces nouvelles balises/filtres dans les paramètres comme ceci:
]
Assurez-vous de ne pas manquer l'une des étapes suivantes:
Créer un dossier appelé "templatetags" au même niveau que models.py
et views.py dans le dossier de votre application
Votre application doit être dans le INSTALLED_APPS dans settings.py
La templatetags dossier doit posséder __init__.py
Redémarrer le serveur django
Où est - 'my_templatetag.py" stockés? Il doit être stocké dans un répertoire appelé "templatetags" qui est à l'intérieur de l'app.
Voir: https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/
si ce n'est pas le cas.
Redémarrer le serveur django. Il a travaillé pour moi après la mise à l'templatetag dossier dans l'application et template_name.py dans le templatetag dossier.
Je sais c'est un peu vieux, mais je suis tombé sur le même problème aujourd'hui. J'ai trouvé la solution dans les docs: https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/
Simplement la copie de l' __init__.py à partir d'un autre emplacement dans le nouveau templatetag du répertoire trié.
mettre my_templatetag.py à l'intérieur de app_name/templatetags puis créer init.py à l'intérieur de app_name/templatetags .. Puis ouvrir un terminal dans le dossier du projet donner la commande python manage.py shell
vous venez de couper/supprimer votre code écrit à l'intérieur de l' (exemple templatetags/home.py)
à partir de home.py vous retirez de votre code et de redémarrer le serveur et encore coller votre code dans home.py il va travailler.