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.
Es zeigt ''template_filters' ist keine registrierte Tag-Bibliothek.' –
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. –
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