Django Rest 框架:没有模型

ste*_*eve 4 django django-views django-rest-framework

我正在努力使用 DRF(Django Rest Framework)创建 RESTAPI。API 只是接收用户的 Twitter 句柄并返回他的 Twitter 数据。

在这里,我没有使用模型,因为它不是必需的。

我应该在这里使用序列化器吗?如果是这样为什么?现在我可以在不使用序列化器的情况下返回数据。此外,我的 API 不可通过网络浏览。我应该如何使其可网络浏览:这是 DRF 的最佳功能之一。

编辑:1

我在视图中使用函数。

@api_view(['GET'])
@csrf_exempt
def getdetails(request):

    call the twitter api
    receive the data
    return HttpResponse(JsonResponse( {'data': {'twitter_id':id,'tweets':count,'Followers':followers,'following':count_follow}}))
Run Code Online (Sandbox Code Playgroud)

在浏览器中我只看到这样的 JSON 数据。

{“数据”:{“twitter_id”:352525,“推文”:121,“关注者”:1008,“关注”:281}}

JPG*_*JPG 6

您可以使用Serializer结果

class SampleSerializer(serializers.Serializer):
    field1 = serializers.CharField()
    field2 = serializers.IntegerField()
    # ... other fields
Run Code Online (Sandbox Code Playgroud)

用法

my_data = {
    "field1": "my sample",
    "field2": 123456
}

my_serializer = SampleSerializer(data=my_data)
my_serializer.is_valid(True)
data = my_serializer.data
Run Code Online (Sandbox Code Playgroud)

您将在变量中获得序列化数据data(您可以my_serializer.data直接使用)

我应该在这里使用序列化器吗?

这取决于您,因为如果您希望在不通过 Twitter API 进行任何修改的情况下显示响应 JSON,则可以不使用 DRF 序列化程序。如果你想对 JSON 进行一些格式化,我的回答会对你有所帮助

我的 API 不可通过网络浏览。我应该如何使其可网络浏览?

也许您遵循了错误的程序。不管怎样,如果没有看到你的代码片段,我们就不能对这件事说更多

更新1

from rest_framework.response import Response


@api_view(['GET'])
@csrf_exempt
def getdetails(request):
    call the twitter  api
    twitter_api = get_response_from_twitter()  # Json response
    return Response(data=twitter_api)
Run Code Online (Sandbox Code Playgroud)