Привет, я изучаю джанго, создавая приложение погоды. Я не знаю, это правильный способ сделать это. Мне нужна форма в списке для добавления города пользователю, и я использую CBV. Но форма отсутствует на веб-сайте. Что я могу сделать?
views.py
from urllib import request
from django.shortcuts import render
import requests
from datetime import datetime
from .models import City
from pytz import timezone
from django.views.generic import ListView
from .forms import CityForm
from django.views.generic.edit import FormMixin, FormView
class Cities(FormMixin,ListView):
model=City
template_name='home.html'
form_class=CityForm
success_url='/'
def get_context_data(self, *, object_list=None, **kwargs):
context =super(Cities, self).get_context_data(**kwargs)
weather_data=[]
for city in City.objects.all():
url=f'https://api.openweathermap.org/data/2.5/weather?q={city}'
data=requests.get(url).json()
if data["cod"] != "404":
now_asia =datetime.fromtimestamp(data['timezone']).strftime('%a,%b %d %Y')
payload={ 'city':data['name'],
'weather':data['weather'][0]['main'],
'icon':data['weather'][0]['icon'],
'fahrenheit':data['main']['temp'],
'celsius':int(data['main']['temp']-273),
'pressure':data['main']['pressure'],
'humidity':data['main']['humidity'],
'description':data['weather'][0]['description'],
'date' :now_asia,
}
weather_data.append(payload)
else:
weather_data={'invalid_city':f'{city} City not found.\n Enter valid city'}
print(context)
context={'weather_data':weather_data}
return context
forms.py
from django.forms import ModelForm
from .models import City
class CityForm(ModelForm):
class Meta:
model=City
fields=['name']
home.html
{% csrf_token %}
{{form}}
<button class="btn" type="submit" >Add city</button>
описание изображения здесь