Django - 处理 KeyError 事件 (API)
Django - Handle KeyError event (API)
我用 Python/Django 制作了一个小天气应用程序。我从 openweathermap.org 获取了实际的天气数据。我设置了我的项目,创建了搜索字段来搜索城市并连接到 API 并且一切正常..直到你输入了错误的字母(例如 chikago)。然后我得到一个 KeyError。
在这里你可以看到我的代码
views.py
from django.shortcuts import render
import requests
def index(request):
API_KEY = 'http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=123456789'
city = request.POST.get('search_input')
res = requests.get(API_KEY.format(city)).json()
if city == '':
city = 'Berlin'
city_weather = {
'city': res['name'],
'temperature': res['main']['temp'],
'description': res['weather'][0]['description'],
'icon': res['weather'][0]['icon']
}
return render(request, 'weather/index.html', {'data': city_weather})
如果我查看检查器,我会看到错误 404,所以我尝试在基础 urls.py 中添加一个 handle404
,但它没有捕获到内部错误。还有带有错误 404 消息的 openweathermap 响应:res {'cod': '404', 'message': 'city not found'}
.
有没有办法将错误消息处理成 div?
您可以使用 .status_code
属性查看您发出的请求的响应代码
from django.shortcuts import render
<b>from django.http import HttpResponse</b>
import requests
def index(request):
API_KEY = 'http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=123456789'
city = request.POST.get('search_input')
<b>request_response = requests.get(API_KEY.format(city))
if request_response.status_code == 200:
res = request_response.json()</b>
city_weather = {
'city': res['name'],
'temperature': res['main']['temp'],
'description': res['weather'][0]['description'],
'icon': res['weather'][0]['icon']
}
return render(request, 'weather/index.html', {'data': city_weather})
<b>else:
return HttpResponse("Not Found")</b>
需要将请求转换为 json 对象。我无法详细编写上面共享的代码。
祝你好运
我用 Python/Django 制作了一个小天气应用程序。我从 openweathermap.org 获取了实际的天气数据。我设置了我的项目,创建了搜索字段来搜索城市并连接到 API 并且一切正常..直到你输入了错误的字母(例如 chikago)。然后我得到一个 KeyError。
在这里你可以看到我的代码 views.py
from django.shortcuts import render
import requests
def index(request):
API_KEY = 'http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=123456789'
city = request.POST.get('search_input')
res = requests.get(API_KEY.format(city)).json()
if city == '':
city = 'Berlin'
city_weather = {
'city': res['name'],
'temperature': res['main']['temp'],
'description': res['weather'][0]['description'],
'icon': res['weather'][0]['icon']
}
return render(request, 'weather/index.html', {'data': city_weather})
如果我查看检查器,我会看到错误 404,所以我尝试在基础 urls.py 中添加一个 handle404
,但它没有捕获到内部错误。还有带有错误 404 消息的 openweathermap 响应:res {'cod': '404', 'message': 'city not found'}
.
有没有办法将错误消息处理成 div?
您可以使用 .status_code
属性查看您发出的请求的响应代码
from django.shortcuts import render
<b>from django.http import HttpResponse</b>
import requests
def index(request):
API_KEY = 'http://api.openweathermap.org/data/2.5/weather?q={}&units=metric&appid=123456789'
city = request.POST.get('search_input')
<b>request_response = requests.get(API_KEY.format(city))
if request_response.status_code == 200:
res = request_response.json()</b>
city_weather = {
'city': res['name'],
'temperature': res['main']['temp'],
'description': res['weather'][0]['description'],
'icon': res['weather'][0]['icon']
}
return render(request, 'weather/index.html', {'data': city_weather})
<b>else:
return HttpResponse("Not Found")</b>
需要将请求转换为 json 对象。我无法详细编写上面共享的代码。 祝你好运