【问题标题】:How to pass a JSON data from React to Django using POST request?如何使用 POST 请求将 JSON 数据从 React 传递到 Django?
【发布时间】:2021-12-19 23:47:30
【问题描述】:

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

App.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>

views.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')

urls.py

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

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

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

【问题讨论】:

  • post 方法假设以 / 结尾。并检查 request.body 以接收原始数据,然后您可以使用 json.loads 转换为字典。

标签: reactjs django fetch


【解决方案1】:

问题之前的几件事。首先,您不应该使用 insert 作为视图名称,因为它违反了其他约定,更多 read this doc

第二次成为fetch("http://localhost:8000/insert/", requestOptions);

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多