2014-01-31 62 views
0

我試圖分配一個JSON POST請求的對象,但它給我以下錯誤:JSON到Django的對象

  "Key 'email' not found in <QueryDict: {}>" 

我的代碼(使用Django的REST框架):

 @api_view(['POST']) 
      def login_views(request): 
      if request.method == 'POST': 
      email = request.POST['email'] 
      result = email 
      return HttpResponse(result) 

JSON要求:

 [{ 
     "email":"[email protected]" 
    }] 

請幫幫忙,新的在Django :)

我改變了我的代碼:

 @api_view(['POST']) 
      def login_views(request): 
      if request.method == 'POST': 
      email = request.DATA['email'] 
      result = email 
      return HttpResponse(result) 

再次出現以下錯誤:

 list indices must be integers, not str 
+0

打印request.POST並粘貼在這裏!我會盡我所能來幫助你! –

+0

我打印request.POST的值,在「」中找不到「Key'email'」 – user2618465

+0

註釋掉該行 'email = request.DATA ['email']' 您的打印語句沒有工作,因爲這一點。這條線被註釋掉了 –

回答

0

看來你使用Django的REST框架,對不對?爲了訪問你的json文章數據,你必須使用request.DATA according to docs:它可以讓你訪問解析後的數據。所以,既然你的JSON:

[{ 
    "email":"[email protected]" 
}] 

爲對象的JSON數組(和-notice的[] Python的列表),則必須進入這樣說:

email = request.DATA[0]["email"] 

順便說一句,錯誤:

list indices must be integers, not str 

意味着request.DATA是一個列表,所以你可以不喜歡使用STR鍵的字典訪問它(request.DATA [「電子郵件」])。