如何从 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
我按照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