将列表从前端(反应)传递到后端(django)

时间:2019-07-21 09:59:15

标签: django reactjs request

我在前端使用React,并且我有一个要在后端处理的列表(我在后端使用DJango)传递数组列表的可能方法有哪些?从前端到后端。

我尝试保存以创建列表中的对象并将其保存在DB中,然后对其进行处理,但这没有用! (或者也许我不知道如何正确使用它)。

mylist= ['a','b','c'];

// somewhere here or laterI want to pass mylist to the back end.
fetch('http://localhost:8000/getSentences').then((response) => response.json()).then(function(data) {
        console.log(data); 
}

我没有任何期望的结果,因为我没有传递需要处理的数据!

2 个答案:

答案 0 :(得分:0)

您不能直接传递数组,

使用jQuery.param(yourObject)

param()方法创建数组或对象的序列化表示,可以被php,ruby,django等各种框架理解。

再次将其转换为python

from urllib import parse
value = parse.parse_qs(self.request.POST.get('name'))

请注意,使用prase可能会丢失一些信息,因此在python中获取数据后,请重新检查数据。

答案 1 :(得分:0)

如果您使用本地提取API将数据发送到服务器,则可以通过以下方式发送数据:

fetch('http://localhost:8000/getSentences', {
  method: 'POST', //or your desired method here
  body: JSON.stringify(listHere)
})

当我们创建API调用时,获取一个options对象,您可以在其中发送数据,并在服务器上使用主体参数在请求对象中获取数据。

在服务器中可以做的事情是:

body_unicode = request.body.decode('utf-8')
body = json.loads(body_unicode)
# body is now your list which you have passed from front end.

注意:如果您正在考虑在URL中传递数据,我不希望这样做,因为它是一个完整的列表,我们通常在想要获取某些信息时使用URL参数,而我们只需要发送一两个即可服务器变量。我所描述的方式是最好的,也是一种标准。