Cet article est une note personnelle lorsque j'ai créé une application avec Django et recherché des fonctionnalités telles que l'aide de Rails.
Python(3.6.2) Django(2.1.7)
L'assistant Rails peut appeler la méthode définie dans helper du côté vue. Dans Django également, j'ai vérifié si la méthode définie dans un autre fichier pouvait être appelée du côté du modèle, et il semble que cela puisse être réalisé en créant un filtre de modèle personnalisé.
Vous pouvez créer un filtre de modèle personnalisé en suivant les étapes ci-dessous.
Créez un répertoire appelé templatetags dans le répertoire de l'application du modèle dans lequel vous souhaitez installer le filtre personnalisé.
Placez \ _ \ _ init__.py pour modulariser les fichiers que vous créez dans le répertoire templatetags.
Appelez d'abord la bibliothèque de modèles.
from django import template
register = template.Library()
Enregistrez votre propre filtre de modèle personnalisé dans cette bibliothèque. Vous pouvez maintenant appeler la méthode créée côté modèle.
@register.filter
def transrate_media_number(var):
if var == 0:
media_name = 'Guru Navi'
elif var == 1:
media_name = 'journal de manger'
elif var == 2:
media_name = 'Piment'
else:
media_name = 'Autre'
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 = 'journal de manger'
elif var == 2:
media_name = 'Piment'
else:
media_name = 'Autre'
return media_name
Le résultat final est une structure de répertoires similaire à la suivante.
app/ ├ models.py ├ templatetags/ │ ├ __init__.py │ └ custom_filter.py └ views.py
Commencez par charger le filtre de modèle personnalisé créé à partir du modèle.
- load custom_filter
Le filtre de modèle personnalisé chargé peut être utilisé sous la forme suivante.
{{argument|Nom du filtre de modèle personnalisé}}
python:template_file.html.haml
- load custom_filter
%table
{% for data in datum %}
%tr
%td
{{ data.take_at }}
%td
# {{argument|Nom du filtre de modèle personnalisé}}
{{ data.media_number | transrate_media_number }}
C'est ça.
Recommended Posts