# -*- coding: utf-8 -*-
from django import template
register = template.Library()

@register.inclusion_tag('menu/create_minimenu.html', takes_context = True)
def minimenu(context):
....
....
@register.inclusion_tag('menu/create_topmenu.html', takes_context = True)
def topmenu(context):
....
....
@register.filter(name = 'commatodot')
def commatodot(value, arg):
    return str(value).replace(",", '.')
commatodot.isSafe = True

template.html

...
initGeolocation2({{ place.longitude|commatodot }}, {{ place.latitude|commatodot }}, "MAIN");
...

De Error:

TemplateSyntaxError at /places/3/

Invalid filter: 'commatodot'

Request Method:     GET
Request URL:    http://localhost:8000/places/3/
Django Version:     1.2.4
Exception Type:     TemplateSyntaxError
Exception Value:    

Invalid filter: 'commatodot'

Esto etiquetas de archivo funciona bien, pero el filtro no. Pero no sé por qué…

InformationsquelleAutor kspacja | 2011-02-08

2 Comentarios

  1. 24

    1. Hizo poner el archivo con los filtros en el interior de un templatetags módulo en su aplicación? I. e., usted debe tener una estructura como:

    project/
      my_app/
        templatetags/
          __init__.py    # Important! It makes templatetags a module. You can put your filters here, or in another file.
          apptags.py     # Or just put them in __init__.py

    2. ¿Incluir las etiquetas? Usted necesita algo como

    {% load apptags %}

    en su plantilla.

    • Se hace… Y templatetags, e «incluir». Pero no resuelve mi problema y cómo escribí mi etiquetas personalizadas de trabajo.
    • No include una biblioteca de etiquetas, que load es: {% load apptags %}
    • Verdadero. Gracias, Joe.
    • Me refiero a la carga demasiado…
    • thx por el templatetags punta. Sin embargo sigo recibiendo el mismo mensaje de error, a mí me parece que Django no está mirando para my_app.templatetags aunque he myapp mencionados en INSTALLED_APPS. ¿Qué sugiere usted? Thx
    • la punta es importante. Añadir la aplicación de posición para INSTALLED_APPS en settings.py

  2. 9

    Para crear su filtro personalizado en django siga estos pasos

    1). Crear un template_tags carpeta en su aplicación.

    2). Agregar/Copiar un __init__.py archivo en esta carpeta para asegurarse de que esta es una carpeta de python.

    3). Agregar your_custom_filter_name.py archivo de aspecto:

    from django import template
    register = template.Library()

    @register.filter(name = 'get_class')
    '''A filter for get class name of object.'''
    def get_class(value):
    return value.__class__.__name__

    4). Para cargar este filtro añade esta en la parte superior
    {% de la carga your_custom_filter_name %}
    en el html de la plantilla .
    .

    5). Reiniciar su servidor y disfrutar 🙂

    Y para más info https://docs.djangoproject.com/en/1.7/howto/custom-template-tags/ siga este enlace

    • Parece el nombre de archivo debe ser custom_filter y que no podemos cambiar si lo deseamos. Podemos?
    • Usted puede cambiar, lo siento por esto :).
    • Yo no reiniciar el servidor antes. Tienes razón, funcionó. Gracias!
    • Muy importante la observación de reiniciar el servidor, el error me estaba volviendo loco.
    • si útil, a continuación, hasta voto por favor:)
    • Ya he votado @GrvTyagi 😉
    • s/template_tags/templatetags/

Dejar respuesta

Please enter your comment!
Please enter your name here