我想创建一个API,以便当用户请求某种类型的数据时,我想查询数据库,并基于该数据创建HTML并以JSON形式返回。
我对django和其他框架还很陌生,但是我已经学习了如何创建对模型进行序列化并返回模型的基本API。现在,我想在返回数据之前先做些事情。
结果可能看起来像这样:
{
"html_response": "<table> (table based on the data) </table>"
}
答案 0 :(得分:1)
鉴于您要返回一个相当自定义的响应,因此最好直接扩展APIView
,覆盖get()
并以此方式创建JSON。与尝试使用ModelViewSet
和Serializer
(它们更适合于序列化模型上的特定字段)进行相同的操作相反,这将为您提供一定的灵活性。
例如,如果您的模型名为MyModel
,并且具有名为value
的属性,则下面的示例将创建一个表,其中的每一列都包含value
:
from rest_framework import views
from rest_framework.response import Response
class MyEndPoint(views.APIView):
def get(self, request):
table = ['<table>']
for rec in MyModel.objects.all():
table.append('<tr><td>{}</td></tr>'.format(rec.value))
table.append('</table>')
return Response({'html_response': ''.join(table)})
您需要将其连接到urls.py
:
path('^html_table', myapp.views.MyEndPoint.as_view())
有关使用APIView
创建视图的更多信息,请here