Inkonsistenz in Datenelement Fähigkeit beladenen JSON Objekt zuzugreifen,
-
06-07-2019 - |
Frage
Ich bin Laden einen JSON-String in Django simplejson
verwenden, also:
obj = json.loads('{"name": "joe"}')
person = obj.name
Dies wirft einen Fehler:
'dict' object has no attribute 'name'
aber wenn ich obj
bis auf die Ansichtsvorlage übergeben und über {{ obj.name }}
ausdrucken, es funktioniert! Warum?
Lösung
Ich bin nicht sicher, wie die Django Aspekt der es funktioniert, aber das Objekt, das Sie von json.loads
erhalten, ist ein Python dict
Objekt. Das bedeutet, dass es keine Attribute seines Schlüssel hat, aber man kann sich, wie Sie Zugriff auf jedes anderes Wörterbuch:
obj = json.loads('{"name": "joe"}')
person = obj['name']
Andere Tipps
json.loads
Lasten JSon in einen Python-Wörterbuch. So greifen Sie müssen es wie ein Wörterbuch, das heißt data['key']
.
Nun, auf der django Vorlage Seite der Dinge, überprüfen Sie die offizielle django Vorlagen Dokumentation.
Direkt zu zitieren:
Technisch, wenn das Template-System einen Punkt trifft, versucht es die folgenden Abfragen, in dieser Reihenfolge:
- Wörterbuch Lookup
- Attribut Lookup
- Methodenaufruf
- List-Index-Lookup
Also im Grunde django-Vorlagen können Sie Wörterbuch Elemente mit data.key
Syntax zugreifen zu können.