我正在使用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标头。这是一些文档。