Использование общих представлений с глаголами HTTP

Я пытаюсь смешать HTTP глаголы со встроенными в Django родовыми представлениями на основе классов, я понимаю, что хорошим шаблоном (поправьте меня, если это не так) является сохранение Url'ов типа app/pets/ и использование HTTP глаголов для определения того, что делать (GET, POST/create, PUT/update, DELETE/delete, etc) вместо чего-то вроде app/pets/add или app/pets/delete, как показано в документации Django при использовании генеративных представлений с формами

Так что я попробовал что-то вроде этого:

urls.py:

    path('login/', views.sign_in, name='login'),
    path('logout/', views.log_out, name='logout'),
    path('register/', views.register, name='register'),
    path('pets/', views.Pet.as_view(), name= "pets"),

Views.py

class Pet(LoginRequiredMixin, View):
    login_url= "/vet/login/"

    #handle Get Request
    class PetListView(ListView):
        model= models.Pet
        context_object_name= "pets"
        template_name= "vet/index.html"

    #Handle Put request
    class PetUpdateView():
        pass

но я получаю ошибку 405 method not allowed (и я думаю, что это не очень хорошая практика).

я также попробовал следующее (определяя PetListView так же, как и выше):

class Pet(LoginRequiredMixin, View):
    login_url= "/vet/login/"

    def get(self, request):
        return HttpResponse(PetListView.as_view())

Но это просто выводит объект на экран.

Я новичок в Django и не знаю, какой подход лучше использовать для этого, используя представления Django generic, так как это сокращает много кода для CRUD операций

Вернуться на верх