前提・実現したいこと
Djangoを使用し、GoogleBooksAPIから取ってきたjsonをhtmlに出力しようと考えています。
まずは返ってきているjsonからtitleを表示させようとしていましたが、うまくいきません。
該当のソースコード
python
1# 一部省略しています 2 def get(request): 3 url = "https://www.googleapis.com/books/v1/volumes?q=" 4 isbn = "isbn:" 5 if "isbn" in request.GET: 6 param_value = request.GET.get("isbn") 7 u = url + isbn + param_value 8 req = urllib.request.urlopen(u) 9 isbn_json = json.load(req) 10 test = isbn_json['items']['volumeInfo']['title'] 11 print(test) 12 context = { 13 'param_value' : param_value, 14 'isbn_json' : isbn_json 15 } 16 return render(request, 'hogehoge.html', context) 17
json
1{ 2 'kind': 'books#volumes', 3 'totalItems': 1, 4 'items': [{ 5 'kind': 'books#volume', 6 'id': 'iGn6ugEACAAJ', 7 'etag': 'hU4sLVOJKS0', 8 'selfLink': 'https://www.googleapis.com/books/v1/volumes/iGn6ugEACAAJ', 9 'volumeInfo': { 10 'title': 'Docker/Kubernetes実践コンテナ開発入門', 11 'authors': ['山田明憲'], 12 'publishedDate': '2018-09-08', 13 'description': 'コンテナ開発、運用がゼロからわかる。本番で使えるコンテナアプリケーションをつくる。Docker/Kubernetesの基礎から、コンテナを中心とした実践開発スタイルまで。', 14 'industryIdentifiers': [{ 15 'type': 'ISBN_10', 16 'identifier': '4297100339' 17 }, { 18 'type': 'ISBN_13', 19 'identifier': '9784297100339' 20 }], 21 'readingModes': { 22 'text': False, 23 'image': False 24 }, 25 'pageCount': 411, 26 'printType': 'BOOK', 27 'maturityRating': 'NOT_MATURE', 28 'allowAnonLogging': False, 29 'contentVersion': 'preview-1.0.0', 30 'panelizationSummary': { 31 'containsEpubBubbles': False, 32 'containsImageBubbles': False 33 }, 34 'imageLinks': { 35 'smallThumbnail': 'http://books.google.com/books/content?id=iGn6ugEACAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api', 36 'thumbnail': 'http://books.google.com/books/content?id=iGn6ugEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api' 37 }, 38 'language': 'ja', 39 'previewLink': 'http://books.google.co.jp/books?id=iGn6ugEACAAJ&dq=isbn:4297100339&hl=&cd=1&source=gbs_api', 40 'infoLink': 'http://books.google.co.jp/books?id=iGn6ugEACAAJ&dq=isbn:4297100339&hl=&source=gbs_api', 41 'canonicalVolumeLink': 'https://books.google.com/books/about/Docker_Kubernetes%E5%AE%9F%E8%B7%B5%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E9%96%8B.html?hl=&id=iGn6ugEACAAJ' 42 }, 43 'saleInfo': { 44 'country': 'JP', 45 'saleability': 'NOT_FOR_SALE', 46 'isEbook': False 47 }, 48 'accessInfo': { 49 'country': 'JP', 50 'viewability': 'NO_PAGES', 51 'embeddable': False, 52 'publicDomain': False, 53 'textToSpeechPermission': 'ALLOWED', 54 'epub': { 55 'isAvailable': False 56 }, 57 'pdf': { 58 'isAvailable': False 59 }, 60 'webReaderLink': 'http://play.google.com/books/reader?id=iGn6ugEACAAJ&hl=&printsec=frontcover&source=gbs_api', 61 'accessViewStatus': 'NONE', 62 'quoteSharingAllowed': False 63 }, 64 'searchInfo': { 65 'textSnippet': 'コンテナ開発、運用がゼロからわかる。本番で使えるコンテナアプリケーションをつくる。Docker/Kubernetesの基礎から、コンテナを中心とした実践開発スタイルまで。' 66 } 67 }] 68}
試したこと
上記コードの以下の部分を変更してみるとitems
は表示されました。
python
1test = isbn_json['items']
json
1// itemsの中身 2[{ 3 'kind': 'books#volume', 4 'id': 'iGn6ugEACAAJ', 5 'etag': 'hU4sLVOJKS0', 6 'selfLink': 'https://www.googleapis.com/books/v1/volumes/iGn6ugEACAAJ', 7 'volumeInfo': { 8 'title': 'Docker/Kubernetes実践コンテナ開発入門', 9 'authors': ['山田明憲'], 10 'publishedDate': '2018-09-08', 11 'description': 'コンテナ開発、運用がゼロからわかる。本番で使えるコンテナアプリケーションをつくる。Docker/Kubernetesの基礎から、コンテナを中心とした実践開発スタイルまで。', 12 'industryIdentifiers': [{ 13 'type': 'ISBN_10', 14 'identifier': '4297100339' 15 }, { 16 'type': 'ISBN_13', 17 'identifier': '9784297100339' 18 }], 19 'readingModes': { 20 'text': False, 21 'image': False 22 }, 23 'pageCount': 411, 24 'printType': 'BOOK', 25 'maturityRating': 'NOT_MATURE', 26 'allowAnonLogging': False, 27 'contentVersion': 'preview-1.0.0', 28 'panelizationSummary': { 29 'containsEpubBubbles': False, 30 'containsImageBubbles': False 31 }, 32 'imageLinks': { 33 'smallThumbnail': 'http://books.google.com/books/content?id=iGn6ugEACAAJ&printsec=frontcover&img=1&zoom=5&source=gbs_api', 34 'thumbnail': 'http://books.google.com/books/content?id=iGn6ugEACAAJ&printsec=frontcover&img=1&zoom=1&source=gbs_api' 35 }, 36 'language': 'ja', 37 'previewLink': 'http://books.google.co.jp/books?id=iGn6ugEACAAJ&dq=isbn:4297100339&hl=&cd=1&source=gbs_api', 38 'infoLink': 'http://books.google.co.jp/books?id=iGn6ugEACAAJ&dq=isbn:4297100339&hl=&source=gbs_api', 39 'canonicalVolumeLink': 'https://books.google.com/books/about/Docker_Kubernetes%E5%AE%9F%E8%B7%B5%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E9%96%8B.html?hl=&id=iGn6ugEACAAJ' 40 }, 41 'saleInfo': { 42 'country': 'JP', 43 'saleability': 'NOT_FOR_SALE', 44 'isEbook': False 45 }, 46 'accessInfo': { 47 'country': 'JP', 48 'viewability': 'NO_PAGES', 49 'embeddable': False, 50 'publicDomain': False, 51 'textToSpeechPermission': 'ALLOWED', 52 'epub': { 53 'isAvailable': False 54 }, 55 'pdf': { 56 'isAvailable': False 57 }, 58 'webReaderLink': 'http://play.google.com/books/reader?id=iGn6ugEACAAJ&hl=&printsec=frontcover&source=gbs_api', 59 'accessViewStatus': 'NONE', 60 'quoteSharingAllowed': False 61 }, 62 'searchInfo': { 63 'textSnippet': 'コンテナ開発、運用がゼロからわかる。本番で使えるコンテナアプリケーションをつくる。Docker/Kubernetesの基礎から、コンテナを中心とした実践開発スタイルまで。' 64 } 65}]
しかし、 title
だけがほしいのでいろいろ試しましたがダメでした。
python
1test = isbn_json['items'][4]['title']
エラー文 list index out of range
となりました。
辞書型リスト?
いろいろ調べてみたのですがどうもよくわからず・・・。
参考サイト1
参考サイト2
調べながら試しているのですが一向にわかる気配がありません・・・。
引き続き調べていますが、どなたかわかる方いらっしゃいますか?
補足情報(FW/ツールのバージョンなど)
Python3.6.4
Django2.0.2
回答2件
あなたの回答
tips
プレビュー