【问题标题】:Django REST Framework: Can you mix API views with template views?Django REST Framework:你可以将 API 视图与模板视图混合使用吗?
【发布时间】:2021-01-07 14:20:13
【问题描述】:

我正在使用 Django 和 React 开发一个 Web 应用程序,并使用 Django REST Framework 让它们相互交流。

我正在尝试创建一个 Django 视图,该视图可以处理来自 React 代码的 AJAX 请求呈现 Django HTML 模板。为此,我使用了来自 Django REST Framework 的 TemplateHTMLRenderer 类,我发现了 here。但是,当我尝试从 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')
        });
    })
}

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      相关资源
      最近更新 更多