首页 > 解决方案 > 如何使用 POST 请求将 JSON 数据从 React 传递到 Django?

问题描述

我有一个 React 前端,它有一个包含数组的状态变量。我想将此状态变量 onClick 传递给我的 Django 的views.py. 我到目前为止是这样的:

应用程序.js

const [dataSource, setDataSource] = useState([]); // Where the data is stored in

const requestOptions = {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(dataSource),
};

const handleSubmit = () => {
    fetch("http://localhost:8000/insert", requestOptions);
};

<Popconfirm onConfirm={handleSubmit}>
    <Button>Submit</Button>
</Popconfirm>

视图.py

def insert(request):
     if request.method == 'POST':
           json_data = request.POST.get() 
           # I'm not sure what should I be putting as a parameter for .get() method

     return render(request, 'frontend/index.html')

网址.py

...
urlpatterns = [
     ...
     path('insert/', views.insert),
     ...
]

我是否使用了正确的方法?如果它是正确的,我应该将什么作为参数传递给该get()方法?

*Ps 我没有为这种方法使用 DRF,我正在构建一个应用程序,其中 Django 和 React 位于一个应用程序中(不是分开的),其中前端是 Django 的一个应用程序。

标签: reactjsdjangofetch

解决方案


问题之前的几件事。首先,您不应该使用insert它作为您的视图名称,这违反了其他约定,更多信息请阅读此文档

第二做fetch("http://localhost:8000/insert/", requestOptions);

第三,当你想得到身体时,你需要做的就是

import json
    data = json.loads(request.body)

你会得到你手中的 json 格式的 post 数据


推荐阅读