Django中解析jQuery發送ajax請求的參數

背景

本次項目中,使用了vue+Django開發,但是沒有構建構建vue項目,使用的是輕量級的vue。因此在解決問題的時候遇到了很多問題,如跨域、網站解析,解決起來比工程項目麻煩。

一、問題

由於沒有使用vue整套的解決方案,因此在進行ajax或者是其他請求的時候,需要自己手動完成,因此記錄一下自己遇到的問題。包括跨域的解決,重點在url的解析

二、解決辦法

2.1 跨域

由於我後端使用的是Django,因此使用corsheaders可以很好的解決問題,可以參考我在跨域問題中解決問題的blog,值得一提的是查看別人的blog,只有同域名下的內容可以訪問,給出圖片的鏈接地址。除此之外都涉及到跨域問題的解決。與此同時下面的幾個標籤不收跨域的影響。

<img src=XXX>  # 圖片的地址
<link href=XXX>  # css的文件資源
<script src=XXX>  # js的腳本資源

2.2 解析

我使用的是Django做後端,但是在解析的時候遇到一些問題,由於傳入的數據是bytes,因此我們需要把數據進行轉碼,但是出現了一個問題就是無法解決下面出現的url,當然這跟我的請求方式有問題,我用的是post的請求方式。

name=%E9%98%BF%E6%96%AF%E8%92%82%E8%8A%AC

前段代碼,使用的是jQuery發送的Ajax的請求

// 使用jQuery發送請求的關鍵代碼,同時使用了vue.js
$.ajax({
  url: globalurl
+ 'register/1.html',
  type:
'post', data: {email: this.email, password: this.Password}, contentType: 'application/json;charset=utf-8', dataType: 'json', success: function (message) { alert("提交成功"+JSON.stringify(message)); }, error: function () { alert("註冊失敗請重新嘗試!"); this.email = ""; this.Password = ""; this.RepeatPassword = ""; } })

這樣的數據傳送到後端,就需要引入unquote進行解析,使用下面的指令安裝包

# 使用下面的指令安裝urllib庫
pip install urllib

使用以下的代碼,進行解析

from urllib.parse import unquote

def transform(str_param):
    param = {i[0]: unquote(i[1]).encode('utf-8').decode('utf-8') for i in [i.split('=') for i in str_param.split('&')]}
    return param

結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章