1

我有一个索引页:

视图.py

class IndexView(TemplateView):
    template_name = "index.html"

网址.py

urlpatterns = [
    path('', IndexView.as_view()),
]

我需要在这个页面中呈现表单

索引.html

{% block content %}
    <!-- Other blocks -->
    <div id="input">
        <form method="POST" class="text-form">
            {% csrf_token %}
            {{ form.as_p }}
            <button type="submit" class="submit btn">Submit</button>
        </form>
    </div>
    <!-- Other blocks -->
{% endblock %}

表格.py

class TextForm(forms.Form):
    text = forms.CharField(widget=forms.Textarea)

一个关于基于类的视图表单处理的主题,但我不清楚如何使用此表单呈现 HTML

4

1 回答 1

3

现在您没有将表单传递给上下文。您可以使用FormView[Django-doc]或其他使用CreateView[Django-doc]UpdateView[Django-doc]等形式的视图。

因此,您可以定义 aFormView并将form_class属性 [Django-doc]设置为您希望呈现的类:

# app/views.py

from app.forms import TextForm
from django.views.generic.edit import FormView

class IndexView(FormView):
    template_name = 'index.html'
    form_class = TextForm

@PavelAntspovich:如果它生成 a post,它将自动构造表单并将 and 传递request.POSTrequest.FILES它,并检查它是否有效。如果是,它将以表单作为参数调用form_valid方法[Django-doc] 。如果没有,它将调用form_invalid方法 [Django-doc]。这些方法需要返回一个HttpResponse(即视图的结果)。

于 2020-03-07T14:03:25.493 回答