Django -- 视图 MultiValueDictKeyError
Django -- Views MultiValueDictKeyError
我要return 4个不同版本的主页
- 带搜索栏的主页。 API
中没有数据
- 带搜索栏的主页。来自 API
的数据
- 带搜索栏的主页。如果 API
中不存在请求,则不存在数据
- 带搜索栏的主页。如果在没有输入任何数据的情况下点击提交按钮,则不存在数据。
版本二、三、四都可以。
但是版本 1,没有 GET 请求的主页不是 returned。由于:
MultiValueDictKeyError at / 'city'" in the views.py file.
如何解决?任何帮助将不胜感激
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
views.py
from django.shortcuts import render
import requests
def index(request):
# Query API with user input
payload = {'q': request.GET['city'], 'appid': 'API-KEY'}
response = requests.get('http://api.openweathermap.org/data/2.5/weather', params=payload)
# successful request
if response.status_code == 200:
# Parse json output for key value pairs
e = response.json()
context = {
'city_name': e['name'],
'weather':e['weather'][0]['main'],
'description' : e['weather'][0]['description'],
'temp' : e['main']['temp'],
'pressure':e['main']['pressure'],
'humidity':e['main']['humidity'],
'visibility':e['visibility'],
'wind_speed':e['wind']['speed'],
'wind_deg':e['wind']['deg']
}
return render(request, 'index.html', {'context': context})
else: # returns homepage if invalid city name is given in form
return render(request, 'index.html')
不要直接调用request.GET['city']
,而是先检查是否设置了城市,例如:
if 'city' in request.GET:
payload = {'q': request.GET['city'], 'appid': 'API-KEY'}
我要return 4个不同版本的主页
- 带搜索栏的主页。 API
中没有数据 - 带搜索栏的主页。来自 API
的数据 - 带搜索栏的主页。如果 API 中不存在请求,则不存在数据
- 带搜索栏的主页。如果在没有输入任何数据的情况下点击提交按钮,则不存在数据。
版本二、三、四都可以。
但是版本 1,没有 GET 请求的主页不是 returned。由于:
MultiValueDictKeyError at / 'city'" in the views.py file.
如何解决?任何帮助将不胜感激
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
views.py
from django.shortcuts import render
import requests
def index(request):
# Query API with user input
payload = {'q': request.GET['city'], 'appid': 'API-KEY'}
response = requests.get('http://api.openweathermap.org/data/2.5/weather', params=payload)
# successful request
if response.status_code == 200:
# Parse json output for key value pairs
e = response.json()
context = {
'city_name': e['name'],
'weather':e['weather'][0]['main'],
'description' : e['weather'][0]['description'],
'temp' : e['main']['temp'],
'pressure':e['main']['pressure'],
'humidity':e['main']['humidity'],
'visibility':e['visibility'],
'wind_speed':e['wind']['speed'],
'wind_deg':e['wind']['deg']
}
return render(request, 'index.html', {'context': context})
else: # returns homepage if invalid city name is given in form
return render(request, 'index.html')
不要直接调用request.GET['city']
,而是先检查是否设置了城市,例如:
if 'city' in request.GET:
payload = {'q': request.GET['city'], 'appid': 'API-KEY'}