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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top