form - Django 1.10.1 ''my_templatetag'' no es una biblioteca de etiquetas registrada. Debe ser uno de:
django forms widgets (8)
¿Dónde se almacena ''my_templatetag.py''? Debe almacenarse en un directorio llamado ''templatetags'' que se encuentra dentro de la aplicación.
Consulte: https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/ si ese no es el caso.
Quiero un menú personalizado según el grupo al que pertenezcas. Estoy usando Django 1.10.1, allauth y así sucesivamente. Cuando estoy tratando de hacer mi templatetag falla y dice: ¨
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'' se ve así:
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()
y el error viene en mi archivo .html que dice,
{% load my_templatetag %}
He intentado reiniciar el servidor como millones de veces, también he intentado cambiar todos los nombres y la aplicación es parte de INSTALLED_APPS en settings.py. ¿Qué estoy haciendo mal?
Además de poner my_templatetag.py
dentro de app_name/templatetags
, asegúrese de reiniciar el servidor de desarrollo Django (o asegúrese de que se reinicie) cada vez que modifique las etiquetas de plantilla. Si el servidor no se reinicia, Django no registrará las etiquetas.
Asegúrate de que no te falte ninguno de los siguientes pasos:
Cree una carpeta llamada "templatetags" al mismo nivel que models.py y views.py en su carpeta de aplicaciones
Su aplicación debe estar en el INSTALLED_APPS en settings.py
La carpeta templatetags debe tener __init__.py
Reinicie el servidor django
Desde django 1.9, puedes cargar esas nuevas etiquetas / filtros en configuraciones como esta:
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'',
''app.apptemplates.load_setting'',
],
''libraries'':{
''my_templatetag'': ''app.templatetags.my_templatetag'',
}
},
},
]
Reinicie el servidor django. Me funcionó después de configurar la carpeta templatetag dentro de la aplicación y template_name.py en la carpeta templatetag.
Sé que esto es un poco viejo, pero me encontré con el mismo problema hoy. Encontré la solución en los documentos: https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/
La aplicación debe contener un directorio templatetags, al mismo nivel que models.py, views.py, etc. Si esto no existe, créelo, no olvide el archivo __init__.py para asegurarse de que el directorio se trate como un paquete de Python.
Simplemente copiando el __init__.py de otra ubicación en el directorio del nuevo templatetag lo ordenó.
acaba de cortar / eliminar su código que está escrito dentro de (ejemplo templatetags / home.py) de home.py, elimina su código y reinicia su servidor y nuevamente pega el código en home.py.
ponga my_templatetag.py dentro de app_name / templatetags y luego cree init .py dentro de app_name / templatetags. Luego abra el terminal en la carpeta del proyecto y dé el comando python manage.py shell
de app_name.templatetags importar mi_templatetag