@YuriyCherniy

Как избавится от двух одинаковых return?

Код ниже возвращает администратора на страницу с формой в случае невалидной формы и в случае если администратор пытается поместить в архив товар расположенный на главной. Для обработки обоих ситуаций используется одинаковый return, что нарушает принцип DRY. Как в подобном случае избавится от дублирования кода?

if form.is_valid():
            if all([hasattr(item, 'itemonmainpage'), form.cleaned_data['is_archived']]):
                messages.warning(
                    request, 'Нельзя поместить в архив товар размещённый на главной странице'
                )
                return render(
                    request, 'showcase/item_update_form.html', {'form': form}
                )
            else:
                return super().post(request, *args, **kwargs)

        return render(
            request, 'showcase/item_update_form.html', {'form': form}
        )
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Воспользоваться принципом fail first и развернуть условие на негативное. Я не питонист, но это так и работает - сначала выкинуть
return super().post(request, *args, **kwargs)

а уже по всем остальным кейсам - нужную логику
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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