Я создал API в django rest_framework, и я тестирую его с почтальоном. * У методов 1001 * проблем нет, но в PUT ,POST
методах это дает некоторые ошибки.
Вот мое представление Book_list вviews.py
:
class Book_list(mixins.ListModelMixin,
mixins.CreateModelMixin,
generics.GenericAPIView):
queryset = Book.objects.all()
serializer_class = Bookserializer
def get(self,*args,**kwargs):
return self.list(self,*args,**kwargs)
def post(self,*args,**kwargs):
return self.create(self,*args,**kwargs)
Вот мое представление Book_detail в views.py
:
class Book_detail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
queryset = Book.objects.all()
serializer_class = Bookserializer
def get(self,*args,**kwargs):
return self.retrieve(self,*args,**kwargs)
def put(self,*args,**kwargs):
return self.update(self,*args,**kwargs)
def delete(self,*args,**kwargs):
return self.destroy(self,*args,**kwargs)
, а вот мое Bookserializer
в serializers.py`:
class Bookserializer(serializers.ModelSerializer):
class Meta():
model = Book
fields = ('id','name','publisher',
'author','isbn','genere')
и вот мое приложение urls.py
:
from django.urls import path , re_path ,register_converter,include
from rest_framework import routers
from . import views
urlpatterns = [
path('Books' , views.Book_list.as_view() ,
name = 'Book_L_2'),
path('Book/<int:pk>' , views.Book_detail.as_view() ,
name = 'Book_D_2'),
path('Authors' , views.Author_list.as_view() ,
name = 'Author_L_2'),
path('Author/<int:pk>' , views.Author_detail.as_view() ,
name = 'Author_D_2'),
]
, но когда я хочу POST
после json (api2 / Books url) с POSTMAN :
{
"name": "biganeh",
"publisher": "ghoghnoos",
"author": 2,
"isbn": 4,
"genere": "Horror"
}
произошла эта ошибка:
AttributeError at /api2/Books
'Book_list' object has no attribute 'data'
Это означает, что request.data
не существует !?как это исправить?