Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Собственные (не основанные на CBV) классы для вьюх [RSS Feed]

#1 Дек. 12, 2016 09:25:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Собственные (не основанные на CBV) классы для вьюх

Elaphe
Знаете в чем главное преимущество CBV перед функциями? В том, что классы можно наследовать.
На функциях вы любо будете дублировать код, либо наплодите кучу непонятных функций-помощников, которые сами по себе представлениями не являются и выглядят тупо и инородно и непонятно зачем. Вместо этого вы один раз делаете базовый класс и далее его наследуете и у наследников уже есть весь необходимый функционал.

 class MyView(View):
    def dispatch(self, request, *args, **kwargs):
         # data - Dict to collect request parameters
         self.data = json.loads(self.request.body or '{}')
         return super(MyView, self).dispatch(request, *args, **kwargs)
   
   def resp(self, data):
        from django.http import JsonResponse
        return JsonResponse(data)
class SomeView(MyView):
      
     def get(self, request):
           self.data #  чего-то делаем с уже подготовленными данными
           return self.resp()



Офлайн

#2 Дек. 12, 2016 11:18:57

Elaphe
Зарегистрирован: 2015-02-04
Сообщения: 125
Репутация: +  5  -
Профиль   Отправить e-mail  

Собственные (не основанные на CBV) классы для вьюх

Я ничего не имею против классов.
Я просто не вижу смысла наследовать свой класс от встроенных в Django CBV

Офлайн

  • Начало
  • » Django
  • » Собственные (не основанные на CBV) классы для вьюх[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version