國家和省對(duì)政府網(wǎng)站建設(shè)要求做網(wǎng)絡(luò)推廣要學(xué)些什么
問題描述
在做項(xiàng)目時(shí),需要把前端的數(shù)組通過axios的get請(qǐng)求發(fā)送到后端處理,于是像這樣直接發(fā)送:
axios.get(url,{params:{arr: update_arr}})
這時(shí)在后端接收后報(bào)錯(cuò)說:沒有 ‘a(chǎn)rr’ 這個(gè)key:
arr = request.GET['arr']
print(arr) # 報(bào)錯(cuò)顯示 沒有 ‘a(chǎn)rr’ 這個(gè)key
那就先不指定key,直接GET,發(fā)現(xiàn)request請(qǐng)求中把‘a(chǎn)rr’變成了‘a(chǎn)rr[]’
arr = request.GET
print(arr)
# 輸出:<QueryDict: {'arr[]': ['{"day":"2023-03-14","type":0}', '{"day":"2023-03-15","type":0}']}>
那我們就用’arr[]’ 這個(gè)key去取數(shù)據(jù),但是輸出的是傳過去數(shù)組的最后一個(gè)元素
arr = request.GET['arr[]']
print(arr)
# 輸出:{"day":"2023-03-15","type":0}
所以axios的get請(qǐng)求并不能像這樣直接傳數(shù)組,那該怎么辦呢?
解決辦法
在網(wǎng)上查閱大量資料,普遍的是提供了兩種方法:
1、自己編寫數(shù)組序列化器
2、使用qs插件
詳情可參考:
https://blog.csdn.net/weixin_62277266/article/details/124158958
https://www.cnblogs.com/kingreatwill/p/12641238.html#/cnblog/works/article/12641238
但本人對(duì)js代碼不是很熟悉,同樣也不想裝額外裝插件,所以就自動(dòng)跳過了這兩種普遍方法,采取一種曲線救國的方法。
將數(shù)組轉(zhuǎn)換成字符串傳送:
axios.get(url,{params:{arr: JSON.stringify(update_arr)}})
這樣我們在后端只需稍微處理一下,我們就可以在后端拿到我們想要的數(shù)組了
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}]