2017-12-13 4 views
0

Ich versuche, einen benutzerdefinierten Vorlagenfilter zu erstellen, aber Invalid filter Fehler erhalten.Ungültiger Filterfehler in django benutzerdefinierten Vorlagenfilter

TemplateSyntaxError at /attainment/reportcard/ 
Invalid filter: 'get_item' 
Request Method: POST 
Request URL: http://127.0.0.1:8000/attainment/reportcard/ 
Django Version: 1.11.5 
Exception Type: TemplateSyntaxError 
Exception Value:  
Invalid filter: 'get_item' 
Exception Location: /media/itsd/ITSD/ROFI/Projects/Rise/venv/lib/python3.5/site-packages/django/template/base.py in find_filter, line 606 
Python Executable: /media/itsd/ITSD/ROFI/Projects/Rise/venv/bin/python 
Python Version: 3.5.2 

Ich habe einen Filter in template_filters.py und registriert erstellt.

template_filters.py

from django.template.defaulttags import register 

# Custom template filter to get data from a dictionary using key in template 

@register.filter 
def get_item(dictionary, key): 
    return dictionary.get(key) 

Und ich habe die Filter in der Vorlage wie folgt verwendet.

<tbody> 
    {% for subject in subjects %} 
     <tr> 
      <td>{{ subject|get_item:"subject" }}</td> 
      <td>{{ subject|get_item:"efffort" }}</td> 
      <td>{{ subject|get_item:"homework" }}</td> 
      <td>{{ subject|get_item:"marks" }}</td> 
      <td>{{ subject|get_item:"grade" }}</td> 
     </tr> 
    {% endfor %} 
</tbody> 

Was vermisse ich?

N.B: Ich habe diese answer gefolgt.

Antwort

1

Sie haben die Tag-Bibliothek zu laden, bevor Sie es in der Vorlage verwenden:

{% load template_filters %} 

Oder Sie die spezifischen Filter laden können:

{% load get_item from template_filters %} 

Lesen Sie die Dokumentation auf custom template tags und den {% load %} Tag Für mehr Information.

+0

Es zeigt ''template_filters' ist keine registrierte Tag-Bibliothek.' –

+0

Es funktionierte, nachdem ich ein Verzeichnis namens' templatags' in meiner App erstellt und 'template_filters.py' in dieses Verzeichnis verschoben habe. Außerdem musste ich ein "__init __. Py" in diesem Verzeichnis erstellen. –

+1

Diese Schritte sind alle im Abschnitt [Code-Layout] (https://docs.djangoproject.com/en/2.0/howto/custom-template-tags/#code-layout) der Dokumente enthalten, mit denen ich verlinkt bin. – Alasdair

Verwandte Themen