04. Django project weerproject

weerproject

schema

op het internet wordt data uitgewisselt over het web, meestal wordt het JSON formaat (Java Script Object Notering) gebruikt om gegevens door te spelen  

weer API met parameters q = stad, units = metric en lang = nl voor nederlands met API key

curl -s 'http://api.openweathermap.org/data/2.5/weather?q=Deerlijk&units=metric&lang=nl&appid=5cf01f009b7d0178a211d460f3ac67d7' | jq

Indien Http-response = 200 dan is de stad gevonden met de accuweather API 

Indien Http-response <> 200 dan is de stad niet gevonden en wordt de foutboodschap : "Stad bestaat niet in deze wereld !" getoond en wordt er geen nieuwe stad ind dedatabase gecreeerd.

Indien Stad al in de database zit dan wordt de boodschap : "Stad bestaat reeds in de database !" getoond en wordt er geen nieuwe stad ind dedatabase gecreeerd.

Per stad worden de temperatuur, beschrijving, een icoon, de tijdzone en het land getoond.

Het json formaat van de gevonden API wordt getoond bij het opstarten van de website.

Stad Sydney

{'coord': {'lon': 151.21, 'lat': -33.87}, 'weather': [{'id': 500, 'main': 'Rain', 'description': 'lichte regen', 'icon': '10d'}], 'base': 'stations', 'main': {'temp': 15.18, 'feels_like': 13.66, 'temp_min': 12.78, 'temp_max': 17, 'pressure': 1022, 'humidity': 88}, 'visibility': 10000, 'wind': {'speed': 3.6, 'deg': 230}, 'rain': {'1h': 0.25}, 'clouds': {'all': 40}, 'dt': 1587934106, 'sys': {'type': 1, 'id': 9600, 'country': 'AU', 'sunrise': 1587932796, 'sunset': 1587971924}, 'timezone': 36000, 'id': 2147714, 'name': 'Sydney', 'cod': 200}
{'stad': <Stad: Sydney>, 'temperatuur': 15.18, 'beschrijving': 'lichte regen', 'icoon': '10d', 'tijdzone': 'UTC+10u', 'land': 'AU'}

Stad Tokyo

{'coord': {'lon': 139.69, 'lat': 35.69}, 'weather': [{'id': 803, 'main': 'Clouds', 'description': 'zwaar bewolkt', 'icon': '04d'}], 'base': 'stations', 'main': {'temp': 13, 'feels_like': 10.58, 'temp_min': 12.22, 'temp_max': 13.33, 'pressure': 1015, 'humidity': 76}, 'visibility': 10000, 'wind': {'speed': 3.1, 'deg': 30}, 'clouds': {'all': 75}, 'dt': 1587934150, 'sys': {'type': 1, 'id': 8074, 'country': 'JP', 'sunrise': 1587930817, 'sunset': 1587979431}, 'timezone': 32400, 'id': 1850144, 'name': 'Tokyo', 'cod': 200}
{'stad': <Stad: Tokyo>, 'temperatuur': 13, 'beschrijving': 'zwaar bewolkt', 'icoon': '04d', 'tijdzone': 'UTC+9u', 'land': 'JP'}

 

Stad Wellington

{'coord': {'lon': 174.78, 'lat': -41.29}, 'weather': [{'id': 804, 'main': 'Clouds', 'description': 'geheel bewolkt', 'icon': '04d'}], 'base': 'stations', 'main': {'temp': 15.2, 'feels_like': 8.72, 'temp_min': 14.44, 'temp_max': 16, 'pressure': 1016, 'humidity': 77}, 'visibility': 10000, 'wind': {'speed': 9.8, 'deg': 360, 'gust': 15.4}, 'clouds': {'all': 97}, 'dt': 1587934258, 'sys': {'type': 1, 'id': 7358, 'country': 'NZ', 'sunrise': 1587927821, 'sunset': 1587965587}, 'timezone': 43200, 'id': 2179537, 'name': 'Wellington', 'cod': 200}
{'stad': <Stad: Wellington>, 'temperatuur': 15.2, 'beschrijving': 'geheel bewolkt', 'icoon': '04d', 'tijdzone': 'UTC+12u', 'land': 'NZ'}

 

Stad Zulte

{'coord': {'lon': 3.45, 'lat': 50.92}, 'weather': [{'id': 800, 'main': 'Clear', 'description': 'onbewolkt', 'icon': '01n'}], 'base': 'stations', 'main': {'temp': 9.73, 'feels_like': 7.37, 'temp_min': 8.89, 'temp_max': 10.56, 'pressure': 1010, 'humidity': 69}, 'wind': {'speed': 1.57, 'deg': 45}, 'clouds': {'all': 0}, 'dt': 1587934311, 'sys': {'type': 3, 'id': 19993, 'country': 'BE', 'sunrise': 1587875306, 'sunset': 1587927549}, 'timezone': 7200, 'id': 2783151, 'name': 'Zulte', 'cod': 200}
{'stad': <Stad: Zulte>, 'temperatuur': 9.73, 'beschrijving': 'onbewolkt', 'icoon': '01n', 'tijdzone': 'UTC+2u', 'land': 'BE'}

 

wat doorgegeven wordt naar template in json formaat wordt :

{
  "stad": "Sydney",
  "temperatuur": 15.16,
  "beschrijving": "half bewolkt",
  "icoon": "03d",
  "tijdzone": "UTC+10u",
  "land": "AU"
}
{
  "stad": "Tokyo",
  "temperatuur": 13.66,
  "beschrijving": "zwaar bewolkt",
  "icoon": "04d",
  "tijdzone": "UTC+9u",
  "land": "JP"
}
{
  "stad": "Wellington",
  "temperatuur": 15.2,
  "beschrijving": "geheel bewolkt",
  "icoon": "04d",
  "tijdzone": "UTC+12u",
  "land": "NZ"
}
{
  "stad": "Zulte",
  "temperatuur": 8.17,
  "beschrijving": "onbewolkt",
  "icoon": "01n",
  "tijdzone": "UTC+2u",
  "land": "BE"
}

Een nieuwe stad kan toegevoegd worden in de database en een willekeurige stad in de database kan weggedaan worden.