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

Django REST Framework如何让自定义APIView和Serializer支持可浏览API

解决方案

DRF 可浏览API的表单渲染需要获取到接口对应的Serializer字段定义,你原代码中只在post方法内部实例化了Serializer,DRF的渲染层无法读取到字段信息,因此不会渲染提交表单。只需两步修改即可支持:

  1. 将视图类的父类从APIView替换为GenericAPIView,并显式指定serializer_class属性
  2. post方法中调用self.get_serializer()获取序列化器实例(和原有逻辑完全兼容)

修改后的完整代码如下:

# Serializer 保持不变
class LoginSerializer(serializers.Serializer):
    username = serializers.CharField()
    password = serializers.CharField(min_length=8, max_length=50)

# View 修改后
from rest_framework import generics

class Login(generics.GenericAPIView):
    permission_classes = [permissions.AllowAny]
    # 关键配置:指定序列化器类,供可浏览API读取字段生成表单
    serializer_class = LoginSerializer

    def post(self, request: Request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # 原有登录校验逻辑不变,比如验证用户名密码、生成token等
        return Response({"msg": "登录成功", "token": "your_token_here"})

# urls.py 保持不变
urlpatterns = [
  path('v1/login', Login.as_view())
]

修改完成后重启服务,访问/v1/login即可看到可浏览API自动生成的用户名、密码输入表单,直接填写内容提交即可测试接口。

内容的提问来源于stack exchange,提问作者Mr. B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:54:01