python - POST 或 GET 失败或成功时友好的返回消息

标签 python django django-rest-framework

当 GET 或 POST 成功或失败时,如何向客户端返回友好消息?

序列化器.py

class BrandSerializer(serializers.ModelSerializer):
    """
    Class to serialize Brand objects
    """
    class Meta:
        model = Brand
        fields = '__all__'
        read_only_fields = 'id'

class BrandSignupSerializer(serializers.Serializer):
    """
    Create Brand profile
    """
    name = serializers.CharField(required=True, write_only=True)
    brand = serializers.CharField(required=True, write_only=True)
    email = serializers.EmailField(required=True, write_only=True)
    phone = serializers.CharField(required=True, write_only=True)
    website = serializers.CharField(required=True, write_only=True)

    class Meta:
        model = Brand
        fields = ('name', 'brand', 'email', 'phone', 'website')
        unique = 'email'

    def create(self, validated_data):
        brand = Brand.objects.create(**validated_data)
        brand.save()
        return brand

    def update(self, instance, validated_data):
        pass

views.py

class BrandList(generics.ListAPIView):
    """
    List all Brands
    HTTP: GET
    """
    queryset = Brand.objects.all()
    serializer_class = BrandSerializer


class BrandDetail(generics.RetrieveUpdateDestroyAPIView):
    """
    List one Brand
    HTTP: GET
    """
    queryset = Brand.objects.all()
    serializer_class = BrandSerializer

class BrandSignup(generics.CreateAPIView):
    """
    Brand signup
    HTTP POST
    """
    queryset = Brand.objects.all()
    serializer_class = BrandSignupSerializer

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        return Response(data=serializer.data, status=status.HTTP_201_CREATED)

最佳答案

我相信您可以在 Response 中传递一个字典,您可以在其中插入自定义信息,例如序列化器数据、自定义消息、状态和状态代码作为字符串:

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    if (serializer.is_valid(raise_exception=True)) :
        response_details = {
            'data': serializer.data,
            'message': "Your custom success message",
            'code': "201",
            'status': HTTP_201_CREATED
        }
    else :
        response_details = {
            'data': serializer.errors,
            'message': "Your custom error message",
            'code': "400",
            'status': HTTP_400_BAD_REQUEST
        }
    return Response(response_details, status=response_details['status'])

然后,您可以在渲染数据的 View 中访问随响应一起传递的字典的不同元素,例如 datamessage

关于python - POST 或 GET 失败或成功时友好的返回消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49817397/

相关文章:

Django 站点地图 xml 文件

python - 覆盖 Django 中的保存导致无限递归错误

django - 同构获取和 Django View

python - 使用来自python的neo4J(服务器)和交易

python - Django - 如何获取查询集中的当前对象?

python - 如何在 Python 中使用 BeautifulSoup 在文本字符串后查找表格?

python - 在 Django 1.6 中编辑表单

django - 使用 django 中间件时出现 ContentNotRenderedError

python - 在 Python 中使用 BeautifulSoup 识别和替换 XML 元素

Python 脚本在 Windows 中输出字典数据,但在 Linux 中不输出