django rest : ошибка @api_view и @classmethod

#django #django-rest-framework

Вопрос:

🚨 Мне отчаянно нужен @classmethod

я использую этот код:

 from rest_framework.response import Response
class MyClass():
    @classmethod
    @api_view(['GET', 'POST', 'PUT', 'DELETE'])
    def CRUD(cls, request, id=0):
         #.....
         return Response({})

 
 urlpatterns = [
    re_path(r'^user/(?:(?P<id>[1-9] )/)?

получить ошибку:
 The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.  

пожалуйста, помогите ; Благодарен 🙏 🏻 🙏 🏻 


Комментарии:

1. Вы получаете эту ошибку, когда/где именно? Пожалуйста, опубликуйте полную обратную связь.

2. @api_view не подходит для представлений на основе классов

3. @deceze для всех запросов , у меня эта ошибка

4. @404pio Что мне делать? 😢

Ответ №1:

Как сказал @404pio. Либо вы используете представление на основе классов, либо представление на основе функций. Вы не можете их смешивать.

представление на основе классов

 from rest_framework.response import Response
from rest_framework.views import APIView

class MyClass(APIView):
   def get(self, request, id):
      # do stuff
      return Response(...)
   def post(self, request, id):
      # do stuff
      return Response(...)
   .
   .
   .
 
 urlpatterns = [
    re_path(r'^user/(?:(?P<id>[1-9] )/)?

или

представление на основе функций

 @api_view(['GET', 'POST'...])
def my_fbv(request, id):
   if request.method == 'GET':
       # do stuff

    elif request.method == 'POST':
       # do stuff
    .
    .
    .
 
 urlpatterns = [
    re_path(r'^user/(?:(?P<id>[1-9] )/)?



, UserView.CRUD)
]
получить ошибку:
The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.

пожалуйста, помогите ; Благодарен 🙏 🏻 🙏 🏻

Комментарии:

1. Вы получаете эту ошибку, когда/где именно? Пожалуйста, опубликуйте полную обратную связь.

2. @api_view не подходит для представлений на основе классов

3. @deceze для всех запросов , у меня эта ошибка

4. @404pio Что мне делать? 😢

Ответ №1:

Как сказал @404pio. Либо вы используете представление на основе классов, либо представление на основе функций. Вы не можете их смешивать.

представление на основе классов



или

представление на основе функций



, MyClass.as_view())
]
или

представление на основе функций



, UserView.CRUD)
]
получить ошибку:
The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.

пожалуйста, помогите ; Благодарен 🙏 🏻 🙏 🏻

Комментарии:

1. Вы получаете эту ошибку, когда/где именно? Пожалуйста, опубликуйте полную обратную связь.

2. @api_view не подходит для представлений на основе классов

3. @deceze для всех запросов , у меня эта ошибка

4. @404pio Что мне делать? 😢

Ответ №1:

Как сказал @404pio. Либо вы используете представление на основе классов, либо представление на основе функций. Вы не можете их смешивать.

представление на основе классов



или

представление на основе функций



, my_module.my_fbv)
]

, UserView.CRUD)
]получить ошибку:
The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.

пожалуйста, помогите ; Благодарен 🙏 🏻 🙏 🏻

Комментарии:

1. Вы получаете эту ошибку, когда/где именно? Пожалуйста, опубликуйте полную обратную связь.

2. @api_view не подходит для представлений на основе классов

3. @deceze для всех запросов , у меня эта ошибка

4. @404pio Что мне делать? 😢

Ответ №1:

Как сказал @404pio. Либо вы используете представление на основе классов, либо представление на основе функций. Вы не можете их смешивать.

представление на основе классов



или

представление на основе функций



, MyClass.as_view())
]или

представление на основе функций



, UserView.CRUD)
]получить ошибку:
The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.

пожалуйста, помогите ; Благодарен 🙏 🏻 🙏 🏻

Комментарии:

1. Вы получаете эту ошибку, когда/где именно? Пожалуйста, опубликуйте полную обратную связь.

2. @api_view не подходит для представлений на основе классов

3. @deceze для всех запросов , у меня эта ошибка

4. @404pio Что мне делать? 😢

Ответ №1:

Как сказал @404pio. Либо вы используете представление на основе классов, либо представление на основе функций. Вы не можете их смешивать.

представление на основе классов



или

представление на основе функций