Django DetailView/ListView 强制 XML 渲染

Posted

技术标签:

【中文标题】Django DetailView/ListView 强制 XML 渲染【英文标题】:Django DetailView/ListView force XML rendering 【发布时间】:2012-05-14 15:08:43 【问题描述】:

有没有办法强制 DetailView/ListView 生成 XML 文件而不是 html

我已经创建了一个 XML 模板并且它可以正确呈现,但是 DetaiView 不允许设置 mimetype。

有什么想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

DetailView 继承自 SingleObjectTemplateResponseMixin,后者继承自 TemplateResponseMixinTemplateResponseMixin 有一个方法 render_to_response,其中可以设置 mimemtype。所以,像

class MyView(DetailView):
    def render_to_response(self, context, **response_kwargs):
        return super(MyView, self).render_to_response(
            context,
            mimetype='application/xml',
            **response_kwargs)

应该工作

【讨论】:

您的代码很完美,但会引发 InvalidSyntax 异常,mimetype 应放在 **response_kwargs 之前才能正常工作。谢谢!【参考方案2】:

你可以简单地使用你视图的content_type属性

class MyView(DetailView):
    content_type = 'application/xml'

自 Django 1.5 起由TemplateResponseMixin 提供

【讨论】:

以上是关于Django DetailView/ListView 强制 XML 渲染的主要内容,如果未能解决你的问题,请参考以下文章

Django之路

Django系列

django 错误

mac电脑安装django ,运行django报错解决

Django 大神带你飞系列~走进Django

django的文档