を使用してDjangoにJSON文字列をロードしているsimplejson
ため、次のようになります。
obj = json.loads('{"name": "joe"}')
person = obj.name
これはエラーをスローします:
'dict' object has no attribute 'name'
しかしobj
、ビューテンプレートに渡して 経由{{ obj.name }}
で印刷すると、うまくいきます! なんで?
を使用してDjangoにJSON文字列をロードしているsimplejson
ため、次のようになります。
obj = json.loads('{"name": "joe"}')
person = obj.name
これはエラーをスローします:
'dict' object has no attribute 'name'
しかしobj
、ビューテンプレートに渡して 経由{{ obj.name }}
で印刷すると、うまくいきます! なんで?
Django の側面がどのように機能するかはわかりませんが、取得するオブジェクトjson.loads
は Pythondict
オブジェクトです。つまり、キーの属性はありませんが、他の辞書と同じようにアクセスできます。
obj = json.loads('{"name": "joe"}')
person = obj['name']
json.loads
json を python 辞書にロードします。したがって、辞書のようにアクセスする必要がありますdata['key']
。
ここで、django テンプレート側で、公式のdjango テンプレートドキュメントを確認してください。
直接引用:
技術的には、テンプレート システムがドットに遭遇すると、次のルックアップをこの順序で試行します。
- 辞書検索
- 属性検索
- メソッド呼び出し
- リスト インデックス ルックアップ
基本的に、django テンプレートを使用すると、data.key
構文を使用して辞書項目にアクセスできます。