Django 無法通過request.POST.get()獲取數據的問題


原來是contentType為application/json時,Django不支持request.POST.get(),但可以通過request.body來獲取string類型的參數:

 

data = json.loads(request.body)
data.get('xxx')

注意:這里的json.loads(request.body)可能會因為python版本的原因會報錯,詳細看https://www.cnblogs.com/hooo-1102/p/12055742.html

 

舉個栗子:

注冊頁面,前端的ajax請求:

 $.ajax({
        // 請求方式
        type:"post",
        // contentType 
        contentType:"application/json",
        // dataType
        dataType:"json",
        // url
        url:"http://127.0.0.1:8000/v1/users",
        // 把JS的對象或數組序列化一個json 字符串
        data:JSON.stringify(post_data),
        // result 為請求的返回結果對象
        success:function (result) {
            if (200 == result.code){
                window.localStorage.setItem('dnblog_token', result.data.token)
                window.localStorage.setItem('dnblog_user', result.username)
                alert("注冊成功 點擊確認即可條轉到自己博客的主頁")
                window.location.href = '/' + result.username + '/topics'
            }else{
                alert(result.error)
            }
        }
    });

后端:

  if request.method == 'POST':
    #注冊
    json_str = request.body
    if not json_str:
      result = {'code':202, 'error': 'Please POST data!!'}
      return JsonResponse(result)
    #如果當前報錯,請執行 json_str = json_str.decode()
    json_obj = json.loads(json_str)

    username = json_obj.get('username')
    email = json_obj.get('email')
    password_1 = json_obj.get('password_1')
    password_2 = json_obj.get('password_2')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM