Comment implémenter la fonctionnalité de type helper Rails dans Django

introduction

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.

environnement

Python(3.6.2) Django(2.1.7)

Filtre de modèle personnalisé

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é.

Méthode de mise en œuvre

Vous pouvez créer un filtre de modèle personnalisé en suivant les étapes ci-dessous.

1. Créez un répertoire appelé templatetags

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é.

2. Placez \ _ \ _ init__.py dans les balises de modèles

Placez \ _ \ _ init__.py pour modulariser les fichiers que vous créez dans le répertoire templatetags.

3. Créez un fichier qui définit un filtre de modèle personnalisé dans les balises de modèles

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

4. Appel du côté du modèle

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

Comment implémenter la fonctionnalité de type helper Rails dans Django
Implémenter la fonction de suivi dans Django
Comment refléter CSS dans Django
Comment supprimer des sessions expirées dans Django
Comment implémenter un sérialiseur imbriqué avec drf-flex-fields
Comment faire des événements envoyés par le serveur dans Django
Comment implémenter la mémoire partagée en Python (mmap.mmap)
Comment refléter ImageField dans Django + Docker (oreiller)
Comment implémenter un sélecteur de dégradé dans Houdini
Comment implémenter "named_scope" de RubyOnRails avec Django
Implémenter la fonctionnalité de connexion JWT dans le framework Django REST
Comment créer une API Rest dans Django
Comment obtenir plusieurs objets de modèle au hasard dans Django
Comment utiliser le bootstrap dans la vue de classe générique Django
Comment télécharger des fichiers dans la vue de classe générique Django
Comment utiliser Decorator dans Django et comment le créer
Comment référencer des fichiers statiques dans un projet Django
Comment développer en Python
Comment écrire une validation personnalisée dans Django REST Framework
Comment utiliser ORM / Query Builder Orator de type Laravel avec Django
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment mettre à jour les informations utilisateur sur Django RemoteUserMiddleware login
Comment implémenter provisoirement une barre de progression dans un langage de script
[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
Comment générer une requête à l'aide de l'opérateur IN dans Django
Comment implémenter Python EXE pour Windows avec le conteneur Docker
Dans Django, comment abréger la longue chaîne de caractères affichée au milieu ...
[Python] Comment faire PCA avec Python
Comment gérer une session dans SQLAlchemy
[Rails] Comment afficher Google Map
[Django] Comment tester le formulaire [TDD]
Comment utiliser les classes dans Theano
Comment écrire sobrement avec des pandas
Comment collecter des images en Python
Erreur liée à memcached dans django
Comment mettre à jour Spyder dans Anaconda
Comment utiliser SQLite en Python
Comment convertir 0,5 en 1056964608 en un seul coup
Comment démarrer avec Django
Comment tuer des processus en vrac
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Comment écrire un fichier wsgi.py indépendant de l'environnement Django1.9
Comment exécuter du code TensorFlow 1.0 en 2.0
Comment gérer le japonais avec Python
Comment se connecter à Docker + NGINX
Comment appeler PyTorch dans Julia
[Pour les débutants] Comment implémenter l'exemple de code O'reilly dans Google Colab
Comment implémenter du code Java en arrière-plan de Red Hat (Linux ONE)
[Django] Comment lire les variables / constantes définies dans un fichier externe
Comment déployer une application Django sur heroku en seulement 5 minutes
Comment effectuer un traitement arithmétique avec le modèle Django
J'ai essayé d'implémenter PLSA en Python