Weather API не получает данные из других мест - PullRequest
0 голосов
/ 24 октября 2019

** Я создаю приложение погоды в django и хочу, чтобы пользователи могли искать погоду в любых местах с помощью API ... Я несколько раз пытался использовать ввод HTML, но он не работает

def home (запрос):

    choose_city = "London" #selected city
    url = f"https://openweathermap.org/data/2.5/weather?q= 
    {choose_city}&units=imperial&appid=b6907d289e10d714a6e88b30761fae22" #open weather url
    response = requests.get(url)
    get_weather = response.json() 



    for weather in get_weather["weather"]:
        pass

    temperature =  get_weather["main"]
    city_name = get_weather["name"]





    weatherContext = {

    "main" : weather["main"],
    "description": weather["description"],
    "temp": temperature,
    "city_name": city_name,
    "city": choose_city,
    "url": url

    }
    return render(request, "MyWeather/base.html", weatherContext)


here is the HTML 

Blockquote

<div class="wrapper">
    <div class="container">


      <nav class="navbar navbar-light bg-light" id="nav">
      <form class="form-inline" action={{url}}>

        <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" >
        <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search </button>
      </form>
    </nav>
    <br>


    <div>
      <h2>
        City: {{city_name}}
      </h2>
    </div><br><br>

      <h4>Weather:     {{main}}</h4><br><hr>
      <h4> Description:     {{description}}</h4><br><hr>

    {% for temperature, key in temp.items%}
      {%if temperature == "temp"%}
         <h4>Temperature:   {{key}} °F</h4><br><hr>

      {%endif%}

     {%endfor%} 

Как мне решить эту проблему

1 Ответ

0 голосов
/ 24 октября 2019

Вот проблема в вашем коде:

 for weather in get_weather["weather"]:
    pass

фактически ничего не делает. Когда я попробовал API, есть список погоды. так что вы можете попробовать первый элемент "weather"

weather = get_weather["weather"][0] #it will get the first element always

Код выше может вызвать ошибку, если в переменной нет элемента. поэтому постарайтесь не вызывать никаких ошибок:

if get_weather["weather"]:  # if found any data
   weather = get_weather["weather"][0]
else:
   weather = {}
...