はじめに
livedoor提供のお天気Webサービスに興味を持ったため、Djangoを利用したお天気検索ページを作成することにしました。(実装環境はPaizaCloud)
APIの概要:市町村ごとのID(以後、「市町村ID」と呼称)をリクエストパラメータとして引き渡すと、IDに紐づくお天気情報(JSONデータ)が返却されるAPI。
http://weather.livedoor.com/weather_hacks/webservice
以下がサンプルコード。
import requests
url = 'http://weather.livedoor.com/forecast/webservice/json/v1'
payload = {'city':'290010'} # 奈良県の市町村ID
tenki_data = requests.get(url, params=payload).json()
print('地方:', tenki_data['location']['area'])
print('都道府県:', tenki_data['location']['prefecture'])
print('市町村:', tenki_data['location']['city'])
print()
print(tenki_data['forecasts'][0]['dateLabel'] + ' の天気は ' + tenki_data['forecasts'][0]['telop'] + ' です。')
print(tenki_data['forecasts'][1]['dateLabel'] + ' の天気は ' + tenki_data['forecasts'][1]['telop'] + ' です。')
以下が実行結果。
地方: 近畿
都道府県: 奈良県
市町村: 奈良
今日 の天気は 曇り です。
明日 の天気は 晴れ です。
作成予定の画面
【1】地域情報一括更新画面
・市町村IDを管理しているxmlを取り込み、テーブルとして管理する為の画面。
xml:http://weather.livedoor.com/forecast/rss/primary_area.xml
・作成するテーブルは「都道府県テーブル(親)」と「市町村テーブル(子)」。「市町村テーブル(子)」で「市町村ID」を管理する。
・画面上の更新ボタンを押下することで以下の処理を行う。
1. 「都道府県テーブル(親)」、「市町村テーブル(子)」の初期化。
2. xmlファイル読み込み、解析。
3. 解析したxmlファイルのデータを「都道府県テーブル(親)」と「市町村テーブル(子)」へ格納する。
【2】お天気検索画面
・画面上の「都道府県プルダウン」「市町村プルダウン」を選択し、確定ボタンが押下されたタイミングで天気情報を画面表示する。「都道府県プルダウン」には「都道府県テーブル(親)」のデータを、「市町村プルダウン」には「市町村テーブル(子)」のデータを設定する。
・「都道府県プルダウン」の選択値に応じて「市町村プルダウン」のデータを制御する。
(例:「都道府県プルダウン」が「奈良県」の場合、「市町村プルダウン」には「奈良、風屋」を選択肢として表示する。)
・《可能であれば》GoogleMapを表示し、選択された市町村の箇所にピン付けする。
(プルダウン選択後か確定ボタン押下後かは検討中。なお、フィジビリティー確認も不十分な為、見送る可能性あり。)
Next
まずは【1】地域情報一括更新画面を作成します。
↓続き
https://qiita.com/oshiro-pooh/items/2071b38cbe02807c086f