序列化器不在 Django Rest Framework 上显示对象

问题描述 投票:0回答:1

我创建了一个测试视图来测试API,如下:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from profiles_api import serializers


class HelloApiView(APIView):
    """Test API View"""

    serializers_class = serializers.HelloSerializer
    # specifies the Input expected when GET,PUT,POST,DELETE is requested

    def get(self, request, format=None):
        """Returns a list of APIView features"""
        an_apiview = [
            "Uses HTTP methods as function (get, post, patch, put, delete)",
            "Similar to django view, but specific for APIs",
            "Gives you the most control over your application",
            "Is mapped manually to urls",
        ]

        return Response({"message": "Hello!", "an_apiview": an_apiview})

    def post(self, request):
        """Create a hello message with our name"""
        serializer = self.serializer_class(data=request.data)
        # serializers_class comes with the APIView that retrieves the configured Serializer Class for our view (Standard way)

        if serializer.is_valid():
            name = serializer.validated_data.get("name")
            message = f"Hello {name}"
            return Response({"message": message})
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我的serializers.py 文件如下所示:

from rest_framework import serializers

class HelloSerializer(serializers.Serializer):
    """Serializes a name field for testing APIView"""

    # similar to django forms
    name = serializers.CharField(max_length=10)

当我运行服务器时,Django Rest Framework 不显示名为 name 的表单,而是显示名为 Content 的表单,当我尝试发布名称(例如“Hola”)时,它会抛出错误(404 Bad request)。

我的 urls.py 文件:

from django.urls import path
from profiles_api import views

urlpatterns = [
    path("hello-view/", views.HelloApiView.as_view()),
]

我尝试通过在我的serializers.py文件中添加元类来解决这个问题,但它不起作用:

如果有任何帮助,我将非常感激。

亲切的问候

django django-rest-framework django-views django-forms django-serializer
1个回答
0
投票

我遇到了同样的问题,并且我的代码完好无损,就像上面一样,请参阅下面返回的错误:

  File "/vagrant/profiles_api/views.py", line 9, in HelloApiView
serializer_class = serializers.HelloSerializer

名称错误:名称“序列化器”未定义

© www.soinside.com 2019 - 2024. All rights reserved.