角度需求中的Django unicode对象

2024-10-03 19:20:14 发布

您现在位置:Python中文网/ 问答频道 /正文

当我从angular调用post请求并传递一个数据然后在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.

我希望你能帮我。谢谢!你知道吗

编辑

问题出在我的JSON数据中。数字84被表示为字符串。感谢@Sudlip指出我的问题。你知道吗


Tags: the数据对象djangonamefrom视图data
2条回答

我觉得这应该管用

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

我更喜欢这个而不是聪明的一行程序,因为在六个月后,一个傻瓜会研究代码,问这个一行程序在这里做什么。。?那个傻瓜可能是任何人,包括你自己! 这是从我的个人经历中得出的

u前缀只是表示您有一个Unicode字符串。当您真正使用字符串时,它不会出现在您的数据中。你知道吗

如果您真的想将其转换为普通字符串,您可以使用字典理解和str关键字来转换键和值:

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

相关问题 更多 >