tag - django: filtro inválido
is not a registered tag library. must be one of: (3)
Casi me estaba volviendo loco con este problema y ninguna de las respuestas anteriores me ayudó.
Si tiene varias aplicaciones, asegúrese de que los nombres de los archivos que contienen sus etiquetas / filtros personalizados sean únicos, preferiblemente app_name_filters.py
. De lo contrario, Django solo cargará los filtros personalizados desde la aplicación que encuentre primero.
Conseguí una aplicación de artículo y tratando de hacer un filtro personalizado, tengo un directorio llamado templatetags en la aplicación de artículo, y un tags.py dentro de ese directorio, aquí está la estructura del directorio.
-manage.py(f)
-settings.py(f)
-articles(d)
- templatetags(d)
- tags.py(f)
En las plantillas, los artículos tienen su propio directorio, todas las plantillas de artículos se extienden desde una plantilla base.html, aquí está la estructura de la plantilla.
-base.html(f)
-articles(d)
-index.html(f)
Cargo las etiquetas en base.html {% load tags%} y uso el filtro personalizado en index.html y obtuve el error de filtro no válido.
tags.py
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter
@stringfilter
def space2Dash(s):
return s.replace('' '', ''_'');
Simplemente no puedo entender lo que hice mal.
edición: cambié el nombre del filtro a abcfilter.py
y tengo la aplicación del artículo cargada en mi settings.py
articulos / index.html
{% load abcfilter %}
{{ "foo bar"|space2dash }}
el error:
Request Method: GET
Request URL: http://localhost:8080/articles/
Django Version: 1.2.5
Exception Type: TemplateSyntaxError
Exception Value:
Invalid filter: ''space2dash''
Exception Location: ***/lib/python2.7/django/template/__init__.py in find_filter, line 363
Python Executable: /usr/local/bin/python
Python Version: 2.7.1
Server time: Sun, 10 Apr 2011 07:55:54 -0500
Primero quitar el punto y coma después de su reemplazo.
¿Tiene un archivo llamado __init__.py
(se supone que tiene 2 guiones bajos antes y después del inicio, es difícil de formatear en el editor) en el directorio templatetags?
Aquí hay una buena página con mucha información si aún no has mirado.
http://docs.djangoproject.com/en/dev/howto/custom-template-tags/
Solo para referencia, resolví el problema moviéndome
{% load ... %}
De la plantilla base a la plantilla concreta. Véase también esta publicación https://.com/a/10427321/3198502