Maison > Article > développement back-end > Explication détaillée de l'utilisation de filter et simple_tag pour définir des fonctions pour le front-end dans Django
Cet article vous présente principalement la méthode d'implémentation consistant à utiliser filter et simple_tag comme fonction personnalisée frontale dans Django. L'article le présente en détail à travers un exemple de code, qui a une certaine valeur de référence et d'apprentissage. pour tout le monde. Les amis qui en ont besoin peuvent venir jeter un œil ci-dessous.
Préface
Le moteur de modèles de Django fournit des fonctions fonctionnelles générales et la plupart des codes peuvent être implémentés via le front-end. La fonction logique est appelée générale ici car elle ne prend en charge les fonctions de fonction que dans les situations les plus courantes, telles que le jugement if, la valeur de retour de comparaison ifequal, etc., mais les fonctions légèrement plus complexes ne sont pas prises en charge, comme le jugement via des modèles. un type numérique légal, si nous ne voulons pas l'implémenter via le code de la vue en arrière-plan, nous pouvons personnaliser certaines fonctions frontales.
Django nous fournit deux méthodes, à savoir filter et simple_tag. Ce qui suit compare les deux méthodes pour implémenter les fonctions fonctionnelles permettant de juger de la valeur de retour.
1. L'application doit être enregistrée dans les paramètresfichier de configuration中
2. Créez le répertoire templatetags
dans le répertoire de l'application 3. Créez un fichier de module dans templatetags et importez les méthodes internes de Django
filter
Créez un module python dans le répertoire templatetags, nommé ici app01_func.py, avec le contenu suivant :
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
Après avoir personnalisé la fonction d'arrière-plan, vous pouvez appeler la fonction fonction dans le fichier modèle. Le premier choix est d'introduire le module python d'arrière-plan dans l'en-tête du fichier modèle.
{% load app01_func %}
Par exemple, lorsque nous devons déterminer si le chargement de la valeur de retour en arrière-plan est un nombre valide, nous pouvons effectuer l'appel suivant :
{% if load|value_verification %} {{ load }} is a valid int number. {% else %} {{ load }} is letter. {% endif %}
simple_tag
La méthode de codage de simple_tag est la même que celle de filter La différence est que le simple_tag. La méthode doit être appelée dans la partie décorateur
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
En même temps, la méthode d'appel frontale doit également être modifiée en
{% value_verification load %}
Passer les paramètres
- filtrer la plupart des supports en passant deux paramètres
- les supports simples passant plusieurs paramètres
Le passage des paramètres dans le filtre peut être obtenu de la manière suivante
{{ load | value_verification:"100"}}
Ici, deux paramètres sont transmis au backend, l'un est chargé et l'autre est 100. Le le backend doit également spécifier les paramètres formels de la fonction :
def value_verification(value, custom): # 配置好形参 ...
Plusieurs paramètres formels peuvent être spécifiés dans simple_tag La méthode d'appel du front-end est la suivante :
{% value_verification load 100 200 ... %}Le filtre ici ne peut accepter que jusqu'à deux paramètres, mais s'il y a plusieurs paramètres à ce moment et que vous ne souhaitez pas utiliser simple_tag, vous pouvez épisser. plusieurs paramètres dans une
Résumé de la comparaison
Certaines choses que le moteur de modèle ne peut pas faire peuvent être effectuées via simple_tag et filter Filter transforme la fonction que nous avons spécifiée en A. méthode qui renvoie une valeur exécutable. simple_tag transforme la fonction fonction en fonction tag, comme if, ifequal, etc. La méthode appelante est également différente :
.
{{ load | value_verification }} # filter {% value_verification load %} # simple_tagParce que selon la méthode appelante, si la valeur de retour doit être utilisée comme base pour un jugement if ou ifequal, seule la méthode filter peut être utilisée ici. La méthode stringfilter peut convertir tous les paramètres reçus en types de chaîne. et référencez la fonction comme le décorateur de registre. Utilisez simplement la méthode. Faites attention à la mettre sous registre, sinon elle ne prendra pas effet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!