【问题标题】:How to retrieve Json meta-data from endpoint using django-rest-framework如何使用 django-rest-framework 从端点检索 Json 元数据
【发布时间】:2018-07-17 17:54:23
【问题描述】:

我正在使用 Django rest 框架从服务器检索数据。 现在我创建一个视图:

class Snipped(APIView):

    authentication_classes = (authentication.SessionAuthentication,)
    permission_classes = (permissions.AllowAny,)

    #@ensure_csrf_cookie
    def get(self, request, format=None):
        request.session["active"] = True
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return JsonResponse(serializer.data, safe=False)


    def post(self, request, format=None):

        serializer = SnippetSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

型号是这样的:

# Create your models here.
class Snippet(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=100, blank=True, default='')
    code = models.TextField()

    def __str__(self):
        return self.title

所以此时我想知道传递到此端点的数据元数据,我找到了http://www.django-rest-framework.org/api-guide/metadata/

但如果是发送选项,我不会获得有关数据的信息,而只有这个 json 答案

{
"name": "Snipped",
"description": "",
"renders": [
  "application/json",
  "text/html"
],
"parses": [
  "application/json",
  "application/x-www-form-urlencoded",
  "multipart/form-data"
],
}

没有(请参阅http://www.django-rest-framework.org/api-guide/metadata/ 的列表)

"parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ],
    "actions": {
        "POST": {
            "note": {
                "type": "string",
                "required": false,
                "read_only": false,
                "label": "title",
                "max_length": 100
            }
        }
    }

知道如何使用 APIView 实现上述结果吗?

【问题讨论】:

    标签: python django rest django-rest-framework


    【解决方案1】:

    只有当视图定义了get_serializer时,动作才会起作用。

    您需要对其进行定义,以便从自动模式生成中受益并返回 SnippetSerializer 实例。

    请参阅generic views 以查看实现示例。

    【讨论】:

    • 我刚刚尝试过,但没有运气似乎不起作用,可以更具体吗?thx
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2015-09-15
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多