GenericAPIView报错排查:需包含serializer_class或重写get_serializer_class()方法
排查GenericAPIView的
serializer_class报错问题 你遇到的这个报错提示指向性很强:GenericAPIView必须包含serializer_class属性,或者重写get_serializer_class()方法。咱们先看看你贴出的代码:
class GenericAPIView(generics.GenericAPIView,mixins.ListModelMixin): queryset=Article.objects.all() serilizer_class=ArticleSerializer def get(self,request): return self.list(request)
问题根源
我一眼就发现了问题——你把serializer_class拼写成了serilizer_class,少了一个字母a!Django REST Framework的GenericAPIView只会识别正确拼写的serializer_class属性,所以它找不到这个关键属性,才抛出了报错。
解决方法
只需要修正拼写错误就行,修改后的代码如下:
class GenericAPIView(generics.GenericAPIView,mixins.ListModelMixin): queryset=Article.objects.all() # 修正拼写:serilizer_class → serializer_class serializer_class=ArticleSerializer def get(self,request): return self.list(request)
额外小提示
如果之后你需要根据不同场景动态指定序列化器,可以选择重写get_serializer_class()方法,比如:
def get_serializer_class(self): # 根据用户身份返回不同的序列化器 if self.request.user.is_staff: return AdminArticleSerializer return ArticleSerializer
内容的提问来源于stack exchange,提问作者neha bharti
相关产品推荐
相关产品推荐

