如何在 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 用户密码?