Что делает метод post () для DeletionMixin в исходном коде Django? - PullRequest
0 голосов
/ 07 января 2020

Я изучаю Django и пытаюсь понять DeleteView из первых принципов.

В исходном коде для DeletionMixin есть и метод delete, и post метод:

class DeletionMixin:
    """Provide the ability to delete objects."""
    success_url = None

    def delete(self, request, *args, **kwargs):
        """
        Call the delete() method on the fetched object and then redirect to the
        success URL.
        """
        self.object = self.get_object()
        success_url = self.get_success_url()
        self.object.delete()
        return HttpResponseRedirect(success_url)

    # Add support for browsers which only accept GET and POST for now.
    def post(self, request, *args, **kwargs):
        return self.delete(request, *args, **kwargs) 

В чем разница между этими двумя методами и когда они вызываются?

Метод delete() вызывается только для request.GET?

Если метод delete() также определен для класса models.Model, это делает что-то другое, переопределить DeletionMixin в виде или что-то еще?

Например:

class MyModel(models.Model):
    def delete(self):
        ...
        return

Пожалуйста, не могли бы вы помочь мне понять логический "рабочий процесс" того, что происходит, когда DeleteView call.

Соответствующие конструкции классов ниже:

class BaseDeleteView(DeletionMixin, BaseDetailView):
    pass


class DeleteView(SingleObjectTemplateResponseMixin, BaseDeleteView):
    template_name_suffix = '_confirm_delete'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...