Créer un filtre avec un modèle django

Préface

Je crée une application Web en utilisant mongodb et django en Python, mais je suis tombé sur une situation où je veux afficher l'id pour identifier l'élément que j'ai obtenu de mongodb qui se répète dans le modèle.

manière

J'ai pensé à écrire {{item._id}} dans le modèle, mais ʻitem._id est "_id": {"$ oid": "54cac41fe4b0b3c7e59cff77"} ` Il ne peut pas être affiché tel quel.

Par conséquent, j'ai décidé de l'afficher en ajoutant un filtre sans modèle.

Structure du répertoire

Créez la structure de répertoires comme suit. Créez un répertoire appelé templatetags.

|-view.py
|-templatetags/
| |- __init__.py
| |- filter.py
|
|-template/
  |- template.html

Contenu de chaque fichier

Il semble que «__init __. Py» doit être écrit par promise afin de reconnaître ce répertoire (templatetags) comme un paquet.

__init__.py


#OK dans le ciel

Décrivez le contenu du filtre dans filter.py. Ici, la valeur de _id est sortie sous forme de chaîne de caractères.

filter.py


from django import template
register = template.Library()
 
@register.filter("mongo_id")
def mongo_id(value):
    return str(value['_id'])

template.html ressemble à ceci, et il semble que vous puissiez l'écrire sous la forme {{objet | filtre}}. Vous devez charger le package que vous souhaitez utiliser.

template.html


{% load filter %}
{% for item in items %}
  <input type="hidden" name="id" value="{{item|mongo_id}}"/>
{% endfor %}

référence

Recommended Posts

Créer un filtre avec un modèle django
[Django 2.2] Ajouter un nouveau badge aux nouveaux messages avec une date à l'aide d'un filtre de modèle
Créer une page d'accueil avec django
[Django] Créer un menu déroulant
Faites une loterie avec Python
Faire un feu avec kdeplot
Faire du modèle une chaîne sur le modèle HTML Django
Faisons une interface graphique avec python.
Faites un son avec le notebook Jupyter
Je veux créer un éditeur de blog avec l'administrateur de django
Déployer l'application Django avec Docker
Faisons une rupture de bloc avec wxPython
Django # 2 (modèle)
Django Tips-Créez un site de classement avec Django-
Créer un système de recommandation avec python
Créer une application Web avec Django
Faisons un graphe avec python! !!
Faisons un spacon avec xCAT
Créer un itérateur de modèle avec PySide
Faire un joli graphique avec plotly
Créer un téléchargeur de fichiers avec Django
Créez une application de scraping avec Python + Django + AWS et modifiez les tâches
Lecteur RSS simple réalisé avec Django
Faisons un jeu de shiritori avec Python
Créer un lecteur vidéo avec PySimpleGUI + OpenCV
Créez un simulateur de gacha rare avec Flask
Créez un pipeline de notebook avec Kedro + Papermill
Faire une figure partiellement zoomée avec matplotlib
Créez un quiz de dessin avec kivy + PyTorch
Faisons la voix lentement avec Python
Créer un écran de connexion dans Django all auth
Créez un classificateur en cascade avec Google Colaboratory
Faisons un langage simple avec PLY 1
Faire un circuit logique avec Perceptron (Perceptron multicouche)
Faire Oui Non Popup avec Kivy
Remarques sur l'activation de PostgreSQL avec Django
Faire une minuterie de lavage-séchage avec Raspberry Pi
Créer une animation GIF avec surveillance des dossiers
Créez un framework Web avec Python! (1)
Faisons une IA à trois yeux avec Pylearn 2
Créez une application de bureau avec Python avec Electron
Faisons un bot Twitter avec Python!
Créez un framework Web avec Python! (2)
Ecrire brièvement if-else du template Django
J'ai fait une application WEB avec Django
Modèle HTML Django partie 2
Internationalisation avec Django
Modèle HTML Django
Astuces pour les modèles Django
CRUD avec Django
Résumé du filtre Django
Un mémorandum pour faire WebDAV uniquement avec nginx
Créer un bot Twitter Trend avec heroku + Python
Fabriquer un appareil de surveillance avec un capteur infrarouge
Comment développer une application de panier avec Django
Démarrez Django dans un environnement virtuel à l'aide de Pipenv
Comment créer un dictionnaire avec une structure hiérarchique.