Django REST框架:你能把API视图和模板视图混合在一起吗



我正在使用Django和React开发一个web应用程序,并使用DjangoREST框架让它们相互对话。

我正在尝试创建一个Django视图,它可以处理React代码呈现Django HTML模板的AJAX请求。为了实现这一点,我使用了Django REST框架中的TemplateHTMLRenderer类。然而,当我尝试从React的那个视图中fetch()数据时,我没有收到任何有效的响应。

这是我的观点:

# URL: "/"
class IndexView(APIView):
renderer_classes = [TemplateHTMLRenderer]
template_name = "dictionary/index.html"
def get(self, request, format=None):
definitions = Definition.objects.all()
return Response({"definitions": definitions})

以下是我如何尝试从React:获取fetch()数据

componentDidMount() {
fetch("/")
.then(response => response.json())
.then(data  => {
this.setState({
definitions: data
});
},
error => {
this.setState({
alert('ERROR')
});
})
}

该代码最终显示警报"0";错误";。

显然,我的视图没有返回有效的JSON对象。如何更改它以同时提供渲染和API功能?

我认为您需要将JSONRenderer添加到renderer_classes,并将application/json添加到HTTP Accept标头。这是一些文档。

最新更新