2011-12-01 11 views
6

Otrzymuję komunikat "TemplateAssertionError: no filtr o nazwie" number_number "" podczas próby zarejestrowania niestandardowego filtru w środowisku szablonów przez zaktualizowanie filtrów dyktować środowisko.jinja2 Filtr niestandardowy "TemplateAssertionError: brak filtru o nazwie" number_number ""

W moim modułu, mam importowane moduł środowiskową następująco:

from jinja2 import environment 

W mojej klasie I zdefiniowane w następujący sposób:

class DashboardHandler(SecurePageHandler): 

    def format_number(number): 
     s = '%d' % number 
     groups = [] 
     while s and s[-1].isdigit(): 
      groups.append(s[-3:]) 
      s = s[:-3] 
     return s + ','.join(reversed(groups)) 

    def do_get(self): 
      # ... snip ... 
      env = environment.Environment(self) 
      env.filters['format_number'] = self.format_number 
      # ... snip ... 

Wewnątrz mojego pliku szablonu html starałem się wdrożyć filtr w następujący sposób:

{{top_five_url .total|format_number}} 

Jak to się dzieje?

Aktualizacja

Czy istnieje domyślna instancja środowiska, powinniśmy używać?

Rozwiązane

Wewnątrz modułu I zdefiniowane moją metodę i aktualizowane filtrów słownika globalnie następująco:

import jinja2 

def format_number(number): 
    s = '%d' % number 
    groups = [] 
    while s and s[-1].isdigit(): 
     groups.append(s[-3:]) 
     s = s[:-3] 
    return s + ','.join(reversed(groups)) 

jinja2.filters.FILTERS['format_number'] = format_number 

Odpowiedz

7

mogę rozwiązać mój problem, jak postępować,

Wewnątrz modułu , Zdefiniowałem moją metodę i zaktualizowałem słownik filtrów globalnie w następujący sposób:

import jinja2 

def format_number(number): 
    s = '%d' % number 
    groups = [] 
    while s and s[-1].isdigit(): 
     groups.append(s[-3:]) 
     s = s[:-3] 
    return s + ','.join(reversed(groups)) 

jinja2.filters.FILTERS['format_number'] = format_number