Ich habe einen Artikel app und versuchen, einen benutzerdefinierten Filter zu machen, ich habe ein Verzeichnis namens templatetags in Artikel app, und ein tags.py in diesem Verzeichnis, hier ist die Verzeichnisstruktur.
-manage.py(f)
-settings.py(f)
-articles(d)
- templatetags(d)
- tags.py(f)
Bei den Vorlagen haben die Artikel ihr eigenes Verzeichnis, alle Artikelvorlagen gehen von einer base.html-Vorlage aus, hier ist die Vorlagenstruktur.
-base.html(f)
-articles(d)
-index.html(f)
Ich lade die Tags in base.html {% load tags %} und verwende den benutzerdefinierten Filter in index.html und erhalte den Fehler "Ungültiger Filter".
tags.py
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter
@stringfilter
def space2Dash(s):
return s.replace(' ', '_');
Ich kann einfach nicht herausfinden, was ich falsch gemacht habe.
bearbeiten: Ich habe den Filternamen in abcfilter.py
und ich habe die Artikel-App in meinem settings.py
artikel/index.html
{% load abcfilter %}
{{ "foo bar"|space2dash }}
den Fehler:
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