Heim >Backend-Entwicklung >Python-Tutorial >Detaillierte Erläuterung der Verwendung von Filter und simple_tag zum Definieren von Funktionen für das Frontend in Django
Dieser Artikel führt Sie hauptsächlich in die Implementierungsmethode der Verwendung von Filter und simple_tag als Front-End-benutzerdefinierte Funktion in Django ein. Der Artikel führt sie ausführlich anhand von Beispielcode ein, der einen gewissen Referenz- und Lernwert hat Für alle, die es brauchen, können Sie unten vorbeischauen.
Vorwort
Djangos Template Engine bietet allgemeine Funktionsfunktionen und die meisten Codes können über das Frontend implementiert werden Die logische Funktion wird hier als „allgemein“ bezeichnet, da sie in den meisten Fällen nur Funktionsfunktionen unterstützt, z. B. „If-Beurteilung“, „ifequal-Vergleich, Rückgabewert“ usw., etwas komplexere Funktionen, z. B. „Ob ein Rückgabewert“ durch Vorlagen, jedoch nicht unterstützt werden Ein zulässiger numerischer Typ. Wenn wir ihn nicht über den Hintergrundansichtscode implementieren möchten, können wir einige Front-End-Funktionen anpassen.
Django stellt uns zwei Methoden zur Verfügung, nämlich filter und simple_tag. Im Folgenden werden die beiden Methoden zur Implementierung der Funktionsfunktionen zur Beurteilung des Rückgabewerts verglichen.
1. Die Anwendung muss in den EinstellungenKonfigurationsdatei中
Filter
Erstellen Sie ein Python-Modul im Templatetags-Verzeichnis, hier app01_func.py genannt, mit folgendem Inhalt:from django import template from django.template.defaultfilters import stringfilter register = template.Library() @register.filter def value_verification(value): # value为前端传递的参数 try: int(value) return True except: return FalseNachdem Sie die Hintergrundfunktion angepasst haben, können Sie die Funktionsfunktion in der Vorlagendatei aufrufen. Die erste Möglichkeit besteht darin, das Hintergrund-Python-Modul im Header der Vorlagendatei einzuführen.
{% load app01_func %}Wenn wir beispielsweise feststellen müssen, ob die Hintergrundrückgabewertladung eine gültige Zahl ist, können wir den folgenden Aufruf durchführen:
{% if load|value_verification %} {{ load }} is a valid int number. {% else %} {{ load }} is letter. {% endif %}
simple_tag
Die Codierungsmethode von simple_tag ist die gleiche wie die von filter. Der Unterschied besteht darin, dass simple_tag Die Methode muss im Dekorationsteil aufgerufen werdenfrom django import template from django.template.defaultfilters import stringfilter register = template.Library() @register.simple # 这里修改为simple_tag def value_verification(value): # value为前端传递的参数 try: int(value) return True except: return FalseGleichzeitig muss auch die Front-End-Aufrufmethode in geändert werden
{% value_verification load %}Parameter übergeben – Filter Am meisten Unterstützt die Übergabe von zwei Parametern
{{ load | value_verification:"100"}}Hier werden zwei Parameter an das Backend übergeben, einer ist Last und der andere ist 100. Der Das Backend muss auch die formalen Parameter für die Funktion angeben:
def value_verification(value, custom): # 配置好形参 ...In simple_tag können mehrere formale Parameter angegeben werden. Die Front-End-Aufrufmethode lautet wie folgt:
{% value_verification load 100 200 ... %}Der Filter hier kann nur bis zu zwei Parameter akzeptieren, aber wenn es zu diesem Zeitpunkt viele Parameter gibt und Sie simple_tag nicht verwenden möchten, können Sie spleißen Mehrere Parameter in einen
Vergleichszusammenfassung
Einige Dinge, die die Template-Engine nicht kann, können durch simple_tag erledigt werden und Filter verwandelt die von uns angegebene Funktion in A Methode, die einen ausführbaren Wert zurückgibt, z. B. if, ifequal usw. Der Vergleich ist wie folgt:
{{ load | value_verification }} # filter {% value_verification load %} # simple_tagDenn je nach aufrufender Methode kann hier nur die Filtermethode verwendet werden, wenn der Rückgabewert als Grundlage für die if- oder ifequal-Beurteilung verwendet werden muss. Die stringfilter-Methode kann alle empfangenen Parameter in String-Typen konvertieren und referenzieren Sie die Funktion wie der Register-Dekorator. Bitte beachten Sie, dass sie unter Register platziert werden muss, sonst wird sie nicht wirksam.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Filter und simple_tag zum Definieren von Funktionen für das Frontend in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!