Создание формы модели внутри listview в Django с помощью CBV

Привет, я изучаю django, создавая приложение погоды. Я не знаю, как правильно это сделать. Мне нужна форма в listview для добавления города пользователю и я использую 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>

введите описание изображения здесь

В get_context_data изменение в конце

   context['weather_data'] = weather_data
   return context

Вы просто хотите добавить еще один ключ, но не перезаписывать весь контекст

Вернуться на верх