You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:27:04