[Django]-'function' object has no attribute 'as_view'

60👍

✅

IngredientCreateView should be a class.
So your views.py replace:

def IngredientCreateView(CreateView):

with:

class IngredientCreateView(CreateView):

62👍

In my case, the problem was that I tried to use a @decorator on the class-based view as if it was a function-based view, instead of @decorating the class correctly.

EDIT: From the linked page, here is a way to apply @login_required to a class-based view:

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

@method_decorator(login_required, name='dispatch')
class ProtectedView(TemplateView):

10👍

IngredientCreateView is a function, not a class.

The following line

def IngredientCreateView(CreateView):

should be replace with

class IngredientCreateView(CreateView):

4👍

def Some_def_View(CreateView):

#should be replaced with

class SomeClassView(CreateView)

2👍

In addition to what is already said here, Check the file name and class name if it is same then you might have to import the class properly.

File name /api/A.py

class A:
//some methods

In your main class

//App main class
from api.A import A

2👍

I faced the same problem but this solution worked for me..

in views.py file in viewclass you can use viewsets instead of CreateView

            from rest_framework import viewsets
            class YourClassView(viewsets.ModelViewSet):

in urls.py file you can use this routing pattern

          from django.conf.urls import url
          from rest_framework import routers

          router = routers.DefaultRouter()
          router.register('books',YourClassView)

          urlpatterns = [
               path('', include(router.urls)),
               path('admin/', admin.site.urls)
            ]

Leave a comment