当前位置: 首页 > news >正文

axios的get请求传入数组参数后端无法接收的问题

问题描述

在做项目时,需要把前端的数组通过axios的get请求发送到后端处理,于是像这样直接发送:

  axios.get(url,{params:{arr: update_arr}})

这时在后端接收后报错说:没有 ‘arr’ 这个key:

arr = request.GET['arr']
print(arr)  # 报错显示 没有 ‘arr’ 这个key

那就先不指定key,直接GET,发现request请求中把‘arr’变成了‘arr[]’

arr = request.GET
print(arr)  
# 输出:<QueryDict: {'arr[]': ['{"day":"2023-03-14","type":0}', '{"day":"2023-03-15","type":0}']}>

那我们就用’arr[]’ 这个key去取数据,但是输出的是传过去数组的最后一个元素

arr = request.GET['arr[]']
print(arr)  
# 输出:{"day":"2023-03-15","type":0}

所以axios的get请求并不能像这样直接传数组,那该怎么办呢?


解决办法

在网上查阅大量资料,普遍的是提供了两种方法:
1、自己编写数组序列化器
2、使用qs插件
详情可参考:
https://blog.csdn.net/weixin_62277266/article/details/124158958
https://www.cnblogs.com/kingreatwill/p/12641238.html#/cnblog/works/article/12641238
但本人对js代码不是很熟悉,同样也不想装额外装插件,所以就自动跳过了这两种普遍方法,采取一种曲线救国的方法。

将数组转换成字符串传送:

  axios.get(url,{params:{arr: JSON.stringify(update_arr)}})

这样我们在后端只需稍微处理一下,我们就可以在后端拿到我们想要的数组了

 from ast import literal_eval...arr = request.GET['arr']print(literal_eval(arr))# 输出: [{'day': '2023-03-14', 'type': 0}, {'day': '2023-03-15', 'type': 0}]
http://www.lryc.cn/news/31700.html

相关文章:

  • 奖金发放-课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
  • 第十四届蓝桥杯第三期模拟赛 【python】
  • Python——函数(重点内容)
  • 2023年如何在Google做外贸
  • Linux操作系统学习(线程池)
  • JVM运行时数据区—Java虚拟机栈
  • gitlab中文社区
  • 深度学习-第T2周——彩色图片分类
  • GNU C编译器扩展关键字:__attribute__
  • C++基础 | 从C到C++快速过渡
  • 【C++】仿函数 -- priority_queue
  • 盘一盘C++的类型描述符(一)
  • Peppol的发展史和基本框架
  • Linux-GCC介绍+入门级Makefile使用
  • iOS(一):Swift纯代码模式iOS开发入门教程
  • IDEA+Python+Selenium+360浏览器自动化测试
  • 运输层概述及web请求
  • python与pycharm从零安装
  • 叠氮试剂943858-70-6,Azidobutyric acid NHS ester,叠氮-C3-活性酯
  • pycharm激活虚拟环境时报错:无法加载文件activate.ps1,因为在此系统上禁止运行脚本,Windows10系统
  • 刷题小抄4-数组
  • Hbase安装
  • 面向对象设计模式:结构型模式之代理模式
  • CCF大数据专家委员会十周年纪念庆典纪实:拥抱数字时代,展望科技未来
  • Qt学习3-Qt Creator四则运算计算器(哔站视频学习记录)
  • 学习 Python 之 Pygame 开发魂斗罗(九)
  • 最简单的SpringBoot+MyBatis多数据源实现
  • Spring Boot 3.0系列【8】核心特性篇之SpringApplication
  • Nginx的搭建与核心配置
  • Java学习笔记 --- jQuery