В чем разница между представлением классов на основе CreateView и микшированием CreateModelMixin - PullRequest
1 голос
/ 16 апреля 2019

Я недавно начал изучать DjangoRestFramework, и я натолкнулся на два способа создания экземпляров модели, один из которых - через Django Rest Framework CreateAPIView, а другой - CreateModelMixin. Поэтому я хотел знать, в чем разница между ними, а также между другими миксинами и представлениями, которые выполняют идентичные функции.

1 Ответ

3 голосов
/ 16 апреля 2019

Вот разница: mixins являются (как описано в комментариях к коду) basic building blocks for generic class based views - они в основном независимы от представления Python-объектов, что означает, что вы не сможете использовать CreateModelMixin в одиночку дляна самом деле создать модель.Вам нужно наследовать это в новом представлении, и CreateAPIView делает именно это:

# Concrete view classes that provide method handlers
# by composing the mixin classes with the base view.

class CreateAPIView(mixins.CreateModelMixin,
                    GenericAPIView):
    """
    Concrete view for creating a model instance.
    """
    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

Та же концепция применяется ко всем другим mixins и views, mixins равны многократно используемые фрагменты кода .

Этот - отличное (длинное, но отличное) прочтение по этому вопросу, очень подробное.

...