【问题标题】:How do you get djangorestframework to return xml using format suffix?你如何让 djangorestframework 使用格式后缀返回 xml?
【发布时间】:2013-12-05 06:49:22
【问题描述】:

我可以让 djangorestframework 通过格式后缀 .json 返回 json,但不能通过 .xml 后缀返回 xml

http://127.0.0.1:8000/chat/rooms/.json

[
{
id: 1,
timestamp: "2013-12-05T04:27:42Z",
topic: "important one"
},
{
id: 2,
timestamp: "2013-12-05T04:27:49Z",
topic: "important two"
},
{
id: 3,
timestamp: "2013-12-05T04:27:55Z",
topic: "important three"
},
{
id: 4,
timestamp: "2013-12-05T04:28:01Z",
topic: "important four"
},
{
id: 5,
timestamp: "2013-12-05T06:43:38Z",
topic: "another great stimulating topic"
}
]


http://127.0.0.1:8000/chat/rooms/.xml

{
detail: "Not found"
}

谁能告诉我我做错了什么,b/c REST api 显然在工作......谢谢!

【问题讨论】:

  • 有相关代码吗? urls.py 和 view 特别有趣。

标签: python xml django django-rest-framework


【解决方案1】:

您需要添加默认未启用的XMLRenderer。

要在设置中执行此操作,请执行以下操作:

REST_FRAMEWORK = {
  'DEFAULT_RENDERER_CLASSES': (
    'rest_framework.renderers.XMLRenderer',
    'rest_framework.renderers.JSONRenderer',
    'rest_framework.renderers.BrowsableAPIRenderer',
  )
}

要在视图级别设置渲染器,请使用render_classes 属性。

看看the Renderers documentation。

更新:在我看来,以上只是答案的一半。您还需要添加xml format suffix, as documented here。

希望对你有帮助。

【讨论】:

  • 你就是那个男人。非常感谢你。对我来说,默认情况下不会启用 xml 似乎有点奇怪,但这是一个很棒的框架。与 java 方式相比,我在 1/10 的时间内完成了更多工作。
  • 2013 年可能是准确的,但您将不得不在 2017 年查看 Revi Gadila 的答案。
【解决方案2】:

现在XMLRenderer 可作为第三方包使用。

$ pip install djangorestframework-xml

settings.py

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework_xml.renderers.XMLRenderer',
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
}

完整的django-rest-framework-xml Docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2012-10-08
    • 1970-01-01
    • 2016-04-30
    • 2020-03-30
    相关资源
    最近更新 更多