Django REST Framework:可以将API视图与模板视图混合使用吗?

时间:2020-09-21 13:17:24

标签: reactjs django api templates django-rest-framework

我正在使用Django和React开发Web应用程序,并使用Django REST Framework使它们彼此通信。

我正在尝试创建一个Django视图,该视图可以处理来自React代码 AND 渲染Django HTML模板的两个AJAX请求。为此,我使用了从here找到的Django REST Framework中的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})

这就是我试图fetch()从React中获取数据的方式:

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

此代码最终显示警报“ ERROR”。

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

1 个答案:

答案 0 :(得分:1)

我相信您需要将JSONRenderer添加到renderer_classes并将application/json添加到HTTP Accept标头。这是一些documentation