Найти - Пользователи
Полная версия: Собственные (не основанные на CBV) классы для вьюх
Начало » Django » Собственные (не основанные на CBV) классы для вьюх
1 2
FishHook
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()
Elaphe
Я ничего не имею против классов.
Я просто не вижу смысла наследовать свой класс от встроенных в Django CBV
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB