Показать другое содержимое, кроме формы, в FormView?

Мне очень не нравится дизайн django CBS, который делает вещи не гибкими. Я хотел бы иметь страницу, верхняя часть которой показывает содержимое объектов, а нижняя часть имеет форму для размещения.

CBS formview

class EditStudent(FormView):
    template_name = "editstudent.html"
    model = models.Student
    success_url = "/home"

Как я могу получить объекты учеников и показать их на шаблоне. Спасибо.

Объект "NoneType" не является вызываемым: Я получаю эту ошибку, когда не указываю класс формы. Создан класс формы 'StForm', связанный с моделью 'Student'. В классе представления EditStudent был унаследован класс CreateView, поскольку данные не были сохранены в базу данных с помощью FormView.

Замените bboard на название папки, в которой находятся ваши шаблоны.
У меня так: templates/bboard, которые находятся в папке приложения.

template_name = 'bboard/tam_form.html'

Строка success_url указывает путь, основанный на имени пути.

success_url = reverse_lazy('student')

Пять самых последних записей также передаются в контексте.

context['students'] = Student.objects.order_by('-pk')[:5]

В шаблоне первые пять записей отображаются сверху, а ниже отображается форма для заполнения.

forms.py

from django.forms import ModelForm
from .models import Student

class StForm(ModelForm):
    class Meta:
        model = Student
        fields = '__all__'

views.py

from .models import Student
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from .forms import StForm

class EditStudent(CreateView):
    template_name = 'bboard/editstudent.html'
    form_class = StForm
    success_url = reverse_lazy('student')

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['students'] = Student.objects.order_by('-pk')[:5]

        return context

urls.py

from django.urls import path
from .views import *

urlpatterns = [
  path('student/', EditStudent.as_view(), name='student'),
]

editstudent.html

<h4>
{% for aaa in students %}
   <p>{{ aaa }}</p>
{% endfor %}
</h4>
<h2>form</h2>
<form method="post" action="{% url 'student' %}">
      {% csrf_token %}
      {{ form.as_p }}
      <input type="submit" value="adding">
</form>
Вернуться на верх