Исключение в Django , json
Всем привет! Создал веб-сайт которая показывает погоду, данные появляются из json файла.Нужно чтобы если писать в строку неправильное название города, то появлялось окно типа "Неправильное название города". Пожалуйста, скажите, как можно так сделать если данные берутся из json файла
views:
def index(request):
appid = '04df3bd974e178dfde66e1f7428c5a7b'
url = 'https://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=' + appid
d = City.objects.all()
d.delete()
if(request.method == 'POST'):
form = CityForm(request.POST)
form.save()
form = CityForm()
cities = City.objects.all()
all_cities = []
for city in cities:
res = requests.get(url.format(city.name)).json()
city_info = {
'city': city.name,
'temp': res["main"]["temp"],
'icon': res["weather"][0]["icon"],
'speed': res["wind"]["speed"],
'humidity': res["main"]["humidity"],
}
all_cities.append(city_info)
context = {'all_info': all_cities, 'form':form}
return render(request, 'weather/index.html', context)
Название отправляется через эту строку index.html
<h1>Погода в вашем городе</h1>
<form action="" method="post">
{% csrf_token %}
<label for="city">Город</label>
{{ form.name }}
<input type="submit" name="send" value="Узнать" class="mt-2 btn btn-danger">
</form>```
Ответы (1 шт):
Автор решения: Andrey Maslov
→ Ссылка
for city in cities:
res = requests.get(url.format(city.name)).json()
if res.get("main"):
city_info = {
'city': city.name,
'temp': res["main"]["temp"],
'icon': res["weather"][0]["icon"],
'speed': res["wind"]["speed"],
'humidity': res["main"]["humidity"],
'error': False,
}
else:
city_info = {
'city': city.name,
'error': True,
}
all_cities.append(city_info)
Вариант 2: Если нужна проверка только по одному городу, который ввел пользователь, то цикл не нужен
if(request.method == 'POST'):
form = CityForm(request.POST)
if form.is_valid():
res = requests.get(url.format(form.cleaned_data("city")).json()
if res.get("main"):
city_info = {
'city': city.name,
'temp': res["main"]["temp"],
'icon': res["weather"][0]["icon"],
'speed': res["wind"]["speed"],
'humidity': res["main"]["humidity"],
}
else:
return HttpResponseRedirect("<URL_НА_КОТОРЫЙ_НАДО_ПЕРЕНАПРАВИТЬ>")