Задать вопрос
@uncle_rufuzzz

Django REST Framework нужна ли явная валидация данных?

Я недавно познакомился с REST Framework и накопилась у меня куча вопросов...
Итак, имеется проект с такой структурой:
Вьюха / Менеджер объектов / БД

Задумка такая:
Приходит ПОСТ запрос во вьюху далее вьюха вызывает менеджер объектов, именно в менеджер забирает и/или кладет данные в БД.
Вопрос такой:
Во вью приходят чистые данные или нужно отдельно вызывать метод .is_valid(), я переживаю за SQL иньекции и всякое такое.

VIEW:
class CompanyViewSet(ModelViewSet):
    """
    Вьюсет компании
    """
    permission_classes = [IsAuthenticated]
    model = OMCompany
    serializer_class = OMCompanySerializer

    def get_queryset(self):
        target_company = CompanyContentManager(model=self.model, request=self.request)
        return target_company.get_target_company()


CompanyContentManager
class CompanyContentManager:
    """
    Базовый менеджер контента компании
    в методах create используется сигнал для автогенерации поля slug
    """

    def __init__(self, model=None, request=None):
        self.model = model
        self.request = request

    def get_target_company(self) -> QuerySet:
        return self.model.objects\
            .select_related('author') \
            .prefetch_related(Prefetch('company_objects', queryset=OMObject.objects.select_related('manager').all()),
                              Prefetch('company_departments'),
                              Prefetch('company_warehouse')) \
            .filter(author__id=self.request.user.id)

    def create_new_company(self) -> Model:
        if not self.request.user.company:
            new_company = self.model.objects.create(title=self.request['title'],
                                                    slug=slugify(self.request['title']),
                                                    location=self.request['location'],
                                                    author__id=1
                                                    )
            new_company.save()
            return new_company
        else:
            raise Http404
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы