Форма Django не отображается на html-странице

Я изучаю Django и создал форму с помощью ModelForms. Сначала я написал views.py как функцию, но когда я попытался сделать его классом, форма не отображается, в то время как остальные теги работают. Вот мой views.py в методе функции

def company(request):
    company = Company.objects.all()
    cform = CompanyForm()
    form = CompanyForm(request.POST or None)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/company')
    return render(request,'company/company.html',{
        'company': company,
        'cform':cform
    })

Это основано на классе views.py

class CompanyView(generic.TemplateView):
    model = 'Company'
    template_name = 'company/company.html'

Я обновил urls.py следующим образом

urlpatterns = [
    path('',views.IndexView.as_view(), name='index'),
    path('form/',views.CompanyView.as_view(),name='company'),
]

Наконец-то это мой html-шаблон

<h1>{{ company.company_name }}</h1>
<ul>
    {% for company in company.choice_set.all %}
    <li>{{ company.company_name }}</li>
    {% endfor %}
</ul>

<form method="post">
    {% csrf_token %}
    <fieldset>
        <legend>
            <h2> Company Form </h2>
        </legend>

        {{ cform.as_p }}

    </fieldset>
    <input type="submit" value="Submit" />
</form>

и forms.py

from .models import Company

# create a ModelForm
class CompanyForm(forms.ModelForm):
    
    class Meta:
        model = Company
        fields = ('company_name','location','email_id')

Я пробовал много изменений в шаблоне и все, но я не могу найти ошибку здесь.

Если вы используете представления, основанные на классах, вам не нужно определение функции в том виде, в котором оно приведено выше, обязательно удалите его. Обратитесь к документации здесь

Попробуйте это определение на основе класса и шаблона:

class CompanyView(generic.FormView):
    template_name = 'company/company.html'
    form_class = CompanyForm
    success_url = '/redirect-to-somewhere/'

И затем в вашем HTML ссылайтесь только на {{ form.as_p }}:

<form method="post">
    {% csrf_token %}
    <fieldset>
        <legend>
            <h2> Company Form </h2>
        </legend>

        {{ form.as_p }}

    </fieldset>
    <input type="submit" value="Submit" />
</form>
Вернуться на верх