Django中使用CreateAPIView创建用户对象出现TypeError如何解决
报错修正方案
1. 修正路由配置
Django 中类视图不能直接作为path的第二个参数,必须调用类视图的as_view()方法生成可调用的视图实例,这是触发本次参数不匹配报错的直接原因。
修改后的路由代码:
from django.urls import path from .views import Register urlpatterns = [ path('register/', Register.as_view()), ]
2. 修正视图代码两处问题
permission_classes要求传入权限类的元组/列表,单个元素的元组需要加后缀逗号,否则会被Python解析为单个权限对象而非容器,不符合DRF的参数规范perform_create方法仅用于自定义实例保存的额外逻辑,不需要返回Response,自定义响应需要重写create方法
修改后的视图代码:
class Register(CreateAPIView): permission_classes = (AllowAny,) serializer_class = UserSerializer def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) obj = serializer.save(user=self.request.user) return Response({ "id": obj.id, "username": obj.username, }, status=status.HTTP_201_CREATED, content_type='application/json')
内容的提问来源于stack exchange,提问作者abolfazlmalekahmadi
相关产品推荐
相关产品推荐

