首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django API传递类/字段名,而不是与它们关联的值

Django API传递类/字段名,而不是与它们关联的值
EN

Stack Overflow用户
提问于 2015-04-20 17:02:31
回答 1查看 103关注 0票数 1

因此,我在Django应用程序中创建了一个API,并且我有一个类NodeID,它遵循以下模式:

代码语言:javascript
复制
class NodeID(enum.IntEnum):
    EIGENVECTOR = 0

我在视图函数中返回的一个简化版本是:

代码语言:javascript
复制
return json.dumps({'eigenvector': NodeID.EIGENVECTOR})

当我在浏览器中查看API的结果时,它会显示‘本征向量’的值为NodeID.EIGENVECTOR,而不是整数0。

代码语言:javascript
复制
{"eigenvector": NodeID.EIGENVECTOR }

这使得我的前端无法处理它(显然,它不知道NodeID是什么)。如何使调用接收NodeID.EIGENVECTOR的值而不是变量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-20 17:28:24

这与Python的enum实现有关,它使用自定义元类来修改对类属性的访问:

只访问值的工作方式如下:

代码语言:javascript
复制
>>> member = NodeID.EIGENVECTOR
>>> member.value
0

因此,从简化的示例中返回它将类似于:

代码语言:javascript
复制
return {'eigenvector': NodeID.EIGENVECTOR.value}

Update:如果使用Python3.4并将输出定位为JSON,Python自己的json.dumps()本机将值扩展到序列化表示形式中。(我在this answer上发现的)

json.dumps()**:** 示例w/

代码语言:javascript
复制
>>> class Foo(IntEnum):
...     bam = 0
...     bar = 1
...
>>> Foo.bam
<Foo.bam: 0>
>>> json.dumps(Foo.bam)
'0'

示例w/嵌套结构:

代码语言:javascript
复制
>>> something = {'a': Foo.bam, 'b': { 'c': Foo.bar}}
>>> something 
{'a': <Foo.bam: 0>, 'b': {'c': <Foo.bar: 1>}}
>>> json.dumps(something) 
'{"a": 0, "b": {"c": 1}}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29753998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档