Ich mache eine Webanwendung mit Mongodb und Django in Python, aber ich bin auf eine Situation gestoßen, in der ich die ID anzeigen möchte, um das von Mongodb erhaltene Element zu identifizieren, das sich in der Vorlage wiederholt.
Ich habe darüber nachgedacht, "{{item._id}}" in die Vorlage zu schreiben, aber "item._id" ist "_id": {"$ oid": "54cac41fe4b0b3c7e59cff77"} ", also Es kann nicht so angezeigt werden, wie es ist.
Aus diesem Grund habe ich beschlossen, es durch Hinzufügen eines Filters ohne Vorlage anzuzeigen.
Machen Sie die Verzeichnisstruktur wie folgt. Erstellen Sie ein Verzeichnis mit dem Namen "Templatetags".
|-view.py
|-templatetags/
| |- __init__.py
| |- filter.py
|
|-template/
|- template.html
Es scheint, dass "__init __. Py" durch Versprechen geschrieben werden muss, um dieses Verzeichnis (Templatetags) als Paket zu erkennen.
__init__.py
#OK am Himmel
Beschreiben Sie den Inhalt des Filters in filter.py
. Hier wird der Wert von _id als Zeichenfolge ausgegeben.
filter.py
from django import template
register = template.Library()
@register.filter("mongo_id")
def mongo_id(value):
return str(value['_id'])
template.html
sieht so aus und es scheint, dass Sie es in Form von {{object | filter}}
schreiben können. Sie müssen das Paket laden, das Sie verwenden möchten.
template.html
{% load filter %}
{% for item in items %}
<input type="hidden" name="id" value="{{item|mongo_id}}"/>
{% endfor %}
Recommended Posts