如何在 Django Rest Framework 中检索外部 JSON 文件以用于 React?

Posted

技术标签:

【中文标题】如何在 Django Rest Framework 中检索外部 JSON 文件以用于 React?【英文标题】:How to retrieve external JSON file in Django Rest Framework for use with React? 【发布时间】:2019-07-27 15:21:27 【问题描述】:

在我运行 nginx 和 Gunicorn 的 EC2 实例上,我的目录中还有几个 json 文件。我最终希望 DRF 能够返回一个带有位于此目录中的指定 json 文件的 Response 对象。

这是我认为我应该做的: 当用户点击某物时,onClick 方法将调用 fetch(),我将传递,比如 'api/jsonfiles' 以及我想要的文件的编号。 urls.py 将具有路径('api/jsonfiles/',views.JsonFileGetter)。在views.py 中的JsonFileGetter 类中,我想知道如何访问检索请求的文件并返回包含数据的响应对象?

【问题讨论】:

这取决于您是要检索 json 文件的内容(就好像它是 DRF 生成的 json 输出一样),或者您是否要像处理任何类型的文件一样提供 json 文件.请参阅此答案以使用 Django 进行有效的文件下载:***.com/questions/1156246/… 【参考方案1】:

你应该这样做:

1- 首先,如您所说,创建 onClick 以 fetch() 例如像 api/jsonfiles 这样的 DRF Api

2- 在 django 端创建一个 urls.py 并为其分配一个视图类。

3- 在你的课堂上应该是这样的

# urls.py
path('jsonfile/<filename>/', JSONFileView.as_view(), name='file_retrieve'),

# Views.py
class JSONFileView(APIView):
    def get(self, request, filename):
        root_path = "Put root folder of files" 
        file_path = os.path.join(root_path, filename)
        with open(file_path, 'r') as jsonfile:
            json_data = json.loads(jsonfile)
        return Response(json_data)

【讨论】:

以上是关于如何在 Django Rest Framework 中检索外部 JSON 文件以用于 React?的主要内容,如果未能解决你的问题,请参考以下文章

Django.rest_framework:如何序列化一对多?

如何使用 TemplateHTMLRenderer 在 Django-REST-Framework 中创建/放置?

django-rest-framework:如何序列化已经包含 JSON 的字段?

如何在 Django Rest Framework 中散列 Django 用户密码?

如何仅使用 django 作为后端并使用 django-rest-framework 发布

如何在 React 中显示来自 django-rest-framework 的错误消息