Один из способов, который я могу придумать, это использование наследования. Мы можем преобразовать общий материал в класс суперпредставления, а затем расширить его в дочерних классах.
Примерно так:
У нас может быть супер класс, подобный этому
class AccessVerifiedView(View):
def get(self, request, *args, **kwargs):
check = Access.objects.filter(user=request.user, id=kwargs["access_id"])
if check:
access_object = check[0]
self.verified_get(access_object)
else:
return redirect(reverse("create_new_access_object"))
def verified_get(self, access_object):
raise NotImplementedError
Тогда мы можем расширить этот класс и использование в наших представлениях.
class MyView(AccessVerifiedView):
def verified_get(self, access_object):
return access_object
Этот подход выглядит немного более читабельным. Любой, кто видит код, может видеть суперкласс и понимать поток кода.
Другие несколько способов сделать это
- Декоратор: у нас может быть декоратор, который будет делать то же самое. И тогда мы можем украсить вид, который мы хотим проверить.