python-3.x 无法在django rest框架中获取所选数据的列表

d7v8vwbk  于 2023-05-02  发布在  Python
关注(0)|答案(1)|浏览(122)

我正在尝试在我的django后端中列出react应用程序中的所有选定项。我不明白接收到的数据格式是什么 www.example.com 是代码:

def post(self,request,pk=None):
        print(request.data) //returns  <QueryDict: {'selectbut': ['service1', 'service2', 'service3'], 'selecttext': ['hello guys']}>

        for i in request.data.get("selectbut"):
             print(i) //prints only the last data in the value here it prints service3

我想获得一个列表,其中包含列表或元组或迭代器中SelectBut的所有值
下面是我React代码:

import axios from 'axios';

function App() {
  const submitform=(e)=>{
    e.preventDefault()
    const formdata=new FormData(e.target)
    for (const i of formdata.values()){
      console.log(i)
    }
    axios.post("http://127.0.0.1:8000/api/customer/resources/",formdata).then(
      (response)=>console.log(response)
    )
  }
  return (
    <div className="App">
      <form onSubmit={submitform}>
        <input type='checkbox' name="selectbut" value="service1"/>service1
        <input type='checkbox' name="selectbut" value="service2"/>service2
        <input type='checkbox' name="selectbut" value="service3"/>service3
        <input type='checkbox' name="selectbut" value="service4"/>service4
        <input type='text' name="selecttext" />service4

        <input type='submit' value="submit"></input>
        
      </form>
    </div>
  );
}

export default App;
nxagd54h

nxagd54h1#

问题是,来自React应用程序的FormData在发送时是URL编码的,当Django接收到它时,它会将数据解析为QueryDict。如果使用。在QueryDict中的get(key)方法,它只返回与键相关的最新值。
要接收与键关联的所有值的列表,请使用getlist()函数而不是get():

def post(self, request, pk=None):
print(request.data)  # returns <QueryDict: {'selectbut': ['service1', 'service2', 'service3'], 'selecttext': ['hello guys']}>

for i in request.data.getlist("selectbut"):
    print(i)  # should print all the selected services

您可以使用语法getlist(“selectbut”)获得与键“selectbut”连接的所有值的列表。所有选择的服务都应该打印出来,并且应该按计划运行。

相关问题