Допустим, я хочу использовать LoginRequiredMixin и UserPermissionMixin, созданные мной, и применить их ко всем представлениям в приложении. Это всего лишь пример, у меня также могут быть миксины, которые добавляют некоторый контекст или делают другие вещи.
Я мог бы сделать это вручную, например, это представление:
class MyCreateView(LoginRequiredMixin, UserPermissionMixin, CreateView)
Но, поскольку у меня много представлений, и у меня могут быть другие конкретные миксины для некоторых представлений, это становится грязным и сложным для управления.
Одним из решений, которое пришло в голову, было бы создание новых классов для универсальных представлений:
class DecoratedCreateView(LoginRequiredMixin, UserPermissionMixin, CreateView):
pass
class DecoratedDetailView(LoginRequiredMixin, UserPermissionMixin, DetailView):
pass
class DecoratedUpdateView(LoginRequiredMixin, UserPermissionMixin, UpdateView):
pass
class DecoratedDeleteView(LoginRequiredMixin, UserPermissionMixin, DeleteView):
pass
и затем используйте их как мои общие представления:
class MyCreateView(DecoratedCreateView)
Это хороший подход? Нужно ли добавлять какие-либо методы в вышеприведенные классы или я просто оставляю их пустыми, и все будет работать как положено?
Есть ли другой способ добиться этого, может быть, в urls.py?