Dieser Artikel ist eine persönliche Notiz, als ich zum ersten Mal eine App mit Django erstellt und nach Funktionen wie Rails Helper gesucht habe.
Python(3.6.2) Django(2.1.7)
Der Rails-Helfer kann die im Helfer auf der Ansichtsseite definierte Methode aufrufen. Auch in Django habe ich untersucht, ob die in einer anderen Datei definierte Methode auf der Vorlagenseite aufgerufen werden kann, und es scheint, dass sie durch Erstellen eines benutzerdefinierten Vorlagenfilters realisiert werden kann.
Sie können einen benutzerdefinierten Vorlagenfilter erstellen, indem Sie die folgenden Schritte ausführen.
Erstellen Sie ein Verzeichnis mit dem Namen templatetags im App-Verzeichnis der Vorlage, in dem Sie den benutzerdefinierten Filter installieren möchten.
Platzieren Sie \ _ \ _ init__.py, um die von Ihnen erstellten Dateien im Templatetags-Verzeichnis zu modularisieren.
Rufen Sie zuerst die Vorlagenbibliothek auf.
from django import template
register = template.Library()
Registrieren Sie Ihren eigenen benutzerdefinierten Vorlagenfilter in dieser Bibliothek. Jetzt können Sie die auf der Vorlagenseite erstellte Methode aufrufen.
@register.filter
def transrate_media_number(var):
if var == 0:
media_name = 'Guru Navi'
elif var == 1:
media_name = 'Essen Log'
elif var == 2:
media_name = 'Paprika'
else:
media_name = 'Andere'
return media_name
custom_filter.py
from django import template
register = template.Library()
@register.filter
def transrate_media_number(var):
if var == 0:
media_name = 'Guru Navi'
elif var == 1:
media_name = 'Essen Log'
elif var == 2:
media_name = 'Paprika'
else:
media_name = 'Andere'
return media_name
Das Endergebnis ist eine Verzeichnisstruktur ähnlich der folgenden.
app/ ├ models.py ├ templatetags/ │ ├ __init__.py │ └ custom_filter.py └ views.py
Laden Sie zunächst den aus der Vorlage erstellten benutzerdefinierten Vorlagenfilter.
- load custom_filter
Der geladene benutzerdefinierte Vorlagenfilter kann in der folgenden Form verwendet werden.
{{Streit|Name des benutzerdefinierten Vorlagenfilters}}
python:template_file.html.haml
- load custom_filter
%table
{% for data in datum %}
%tr
%td
{{ data.take_at }}
%td
# {{Streit|Name des benutzerdefinierten Vorlagenfilters}}
{{ data.media_number | transrate_media_number }}
Das ist es.
Recommended Posts