2016-06-20 6 views
0

角度からの投稿要求を呼び出し、データを渡してからdjangoビューで受け取ると、データはユニコードキーと値を持つオブジェクトになります。角度リクエストのDjango unicodeオブジェクト

サンプル。

//from angular 
$http.post("url_here",{"name" : "alde","grade" : 94}) 

//views.py 
data_from_angular = json.loads(request.body.decode("utf-8")) 
print(data_from_angular) 
>>>> {u'name' : u'alde', u'grade' : u'84'} // this is the problem 
>>>> {'name' : 'alde', 'grade' : 84} // I want this result so that I can have the 'grade' as number not unicode. 

私があなたにこれを手伝ってくれることを願っています。ありがとう!

EDIT

問題は、私のJSONデータです。番号84は文字列として示されていました。私の問題を指摘してくれた@Sudlipに感謝します。

答えて

1

u-prefixは、あなたがUnicode文字列を持っていることを意味します。実際に文字列を使用すると、データには表示されません。

あなたは本当にあなたが辞書の理解とstrキーワードを使用して、キーと値の両方を変換することができ、通常の文字列に変換したい場合:

data_from_angular = dict((str(k), str(v)) for k, v in data_from_angular.items()) 
+0

お返事ありがとう@Sudip。私は、すべてのキーと値を文字列に変換しますが、「グレード」はどうですか?私はそれを数字にしたい。 – aldesabido

+0

@aldesabidoオリジナルのJSONデータを表示できますか? 84は数字の代わりに文字列として表示されます。それはユニコードとは関係ありません。 –

+0

@Sudlipはそれを今得ました。 84はJSONデータの "84"です。私の悪い。 tsk2。それを指摘してくれてありがとう。 – aldesabido

0

私はこれは私が好む

data_from_angular = json.loads(request.body.decode("utf-8")) 
another_dict = dict() 
for k, v in data_from_angular.iteritems(): 
    if v.isdigit(): 
     another_dict[k] = v 
    elif v.isalpha(): 
     another_dict[k] = v 
    else: 
     # do something here 

を動作するはずだと思いますこれは賢いオンライナーよりも6ヶ月遅れてレーンの愚か者がそのコードを調べて、このオンライナーがここで何をしているのか尋ねるからです。そして、その愚か者はあなた自身を含むことに誰でもできる! これは個人的な経験から引き出されたものです

関連する問題