LoginSignup
1
2

More than 3 years have passed since last update.

【Python】【Django】お天気予報機能1(要件整理)

Last updated at Posted at 2019-05-06

はじめに

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2