如何从 Django 获取 api 格式的响应

How to get api format response from Django

我按照Django Rest framework的官方文档"Writing regular Django views..."得到了这样的代码:

#views.py file

#imports go here

class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
    def __init__(self, data, **kwargs):
        content = JSONRenderer().render(data)
        kwargs['content_type'] = 'application/json'
        super(JSONResponse, self).__init__(content, **kwargs)

def items(request):
    output = [{"a":"1","b":"2"},{"c":"3","d":"4"}]
    return JSONResponse(output)

而且效果很好。当用户转到 /items/ 页面时,他或她会看到一个漂亮的 json 格式的数据 [{"a":"1","b":"2"},{"c":"3","d":"4"}]。但是,我如何获取(代码?)api 格式的数据,或检查用户是否请求 ?format=api 然后以 api 格式呈现,如果没有,则以 json 格式。 api 格式的数据是指这种 view

按照 here 所述尝试使用 @api_view() 装饰器。并确保使用内置的 Response 而不是 JSONResponse。

您的视图应该如下所示:

from rest_framework.decorators import api_view

...

@api_view()   
def items(request):
    output = [{"a":"1","b":"2"},{"c":"3","d":"4"}]
    return Response(output)    

在获取错误的情况下

Cannot apply DjangoModelPermissions on a view that does not have model or queryset property

从您的休息框架权限设置中删除 DjangoModelPermissions settings.py