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.
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.
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
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 %}
Recommended Posts