【发布时间】:2019-06-22 14:08:07
【问题描述】:
我在 django rest_framework 中创建了一个 api,我正在使用 postman 对其进行测试
GET ,DELETE 方法没有任何问题,但在 PUT ,POST 方法中会出现一些错误。
这是我在 views.py 中的 Book_list 视图:
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)
这是我在 views.py 中的 Book_detail 视图:
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)
这是我在 serializers.py 中的Bookserializer:
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 不存在!?
如何解决这个问题?
【问题讨论】:
标签: django http django-rest-framework http-post postman