Как правильно писать методы в CBV в Django? Я работаю с API и до текущего момента писал логику во view создавая обычные функции. Каждый раз приходилось повторять 2-3 строки кода в начале каждой функции, чтобы указать API_KEY, проверить доступно ли API и т.д. В общем, следуя принципе DRY я начал искать решения. Является ли CBV этим решением?
Пока всё кажется намного сложнее, чем писать логику в стиле FBV.
Главный вопрос заключается в следующем: как создать родительский класс, описать в нем мои собственные методы (каждый получает разные данные по API), и чтобы принцип работы был такой же как в FBV: принять запрос (request), прочитать у него значения (в get, post), обработать их (я не использую БД), и передать контекст в шаблон.
Я пока не силен в ООП и пытаюсь разобраться.
Помогите разобраться.

21 Авг 2019 в 07:01
186 +1
0
Ответы
1

Да, использование Class-Based Views (CBV) в Django может быть хорошим решением для вашей ситуации. Один из основных принципов CBV - это возможность создания родительского класса, в котором описываются общие методы для всех ваших view. Очень удобно разделять повторяющуюся логику между различными view, используя наследование.

Вам нужно создать свой собственный класс, который будет являться родительским для всех ваших view. В этом классе вы можете определить методы для работы с вашим API, проверку доступности API и другие общие задачи. Затем вы можете создать дочерние классы, которые будут наследовать этот родительский класс и использовать его методы.

Пример:

from django.views.generic import View
class APICallMixin:
def call_api(self, api_key, data):
# Логика вызова API
pass
class MyView(APICallMixin, View):
def get(self, request):
api_key = 'your_api_key'
data = request.GET.get('data')
response_data = self.call_api(api_key, data)
context = {
'response_data': response_data
}
return render(request, 'your_template.html', context)

В данном примере APICallMixin является родительским классом, в котором определен метод call_api. Дочерний класс MyView наследует этот класс и использует метод call_api для вызова API в методе get.

Таким образом, вы можете использовать принцип DRY, разделяя общую логику между различными view, при этом сохраняя простоту в использовании и понимании кода.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 093 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир