Django edit.py Вопрос по ProcessFormView()

class ProcessFormView(View):
    """Render a form on GET and processes it on POST."""

    def get(self, request, *args, **kwargs):
        """Handle GET requests: instantiate a blank version of the form."""
        return self.render_to_response(self.get_context_data())

    def post(self, request, *args, **kwargs):
        """
        Handle POST requests: instantiate a form instance with the passed
        POST variables and then check if it's valid.
        """
        **form = self.get_form()**
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    # PUT is a valid HTTP verb for creating (with a known URL) or editing an
    # object, note that browsers only support POST for now.
    def put(self, *args, **kwargs):
        return self.post(*args, **kwargs)

В этой части нет части, которая импортируется путем наследования self.get_form(), self.form_valid(), поэтому мне интересно, как импортировать ее и просто использовать.

Это неполный код? Чтобы использовать его нормально, я должен использовать "ProcessFormView(View, ModelFormMixin)" вот так?

Версия Django, которую я использую, - 4.1.5

Интересно, почему это вдруг появилось? Понятие наследования, безусловно, существует, но у меня есть сомнения, не нарушает ли оно его. В качестве примера вы можете увидеть, что другие коды наследуются очень хорошо.

``Класс BaseDeleteView(DeletionMixin, FormMixin, BaseDetailView): """ Базовое представление для удаления объекта.

Using this base class requires subclassing to provide a response mixin.
"""

form_class = Form

def __init__(self, *args, **kwargs):
    # RemovedInDjango50Warning.
    if self.__class__.delete is not DeletionMixin.delete:
        warnings.warn(
            f"DeleteView uses FormMixin to handle POST requests. As a "
            f"consequence, any custom deletion logic in "
            f"{self.__class__.__name__}.delete() handler should be moved "
            f"to form_valid().",
            DeleteViewCustomDeleteWarning,
            stacklevel=2,
        )
    super().__init__(*args, **kwargs)

def post(self, request, *args, **kwargs):
    # Set self.object before the usual form processing flow.
    # Inlined because having DeletionMixin as the first base, for
    # get_success_url(), makes leveraging super() with ProcessFormView
    # overly complex.
    self.object = self.get_object()
    form = self.get_form()
    if form.is_valid():
        return self.form_valid(form)
    else:
        return self.form_invalid(form)

def form_valid(self, form):
    success_url = self.get_success_url()
    self.object.delete()
    return HttpResponseRedirect(success_url)

`

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