Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Verwendung von Filter und simple_tag zum Definieren von Funktionen für das Frontend in Django

Detaillierte Erläuterung der Verwendung von Filter und simple_tag zum Definieren von Funktionen für das Frontend in Django

零下一度
零下一度Original
2017-06-17 10:58:33999Durchsuche

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.

Vorbereitung

1. Die Anwendung muss in den EinstellungenKonfigurationsdatei中

2. Erstellen Sie das Templatetags-Verzeichnis


im Anwendungsverzeichnis 3. Erstellen Sie die Moduldatei in Templatetags und importieren Sie interne Django-Methoden


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 False
Nachdem 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 werden


from 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 False
Gleichzeitig 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


– einfach Unterstützt die Übergabe mehrerer Parameter


Die Parameterübergabe im Filter kann auf folgende Weise erreicht werden


{{ 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

String mit bestimmten Zeichen umwandeln und an das Backend übergeben. Das Backend kann auch mehrere Parameter durch Aufteilen erhalten.

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_tag
Denn 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn