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

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

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

有什么想法吗?

谢谢!

【问题讨论】:

    标签: xml django templates django-templates detailview


    【解决方案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 提供

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 2020-04-15
      • 1970-01-01
      • 2019-12-09
      • 2014-07-27
      • 1970-01-01
      • 2016-10-26
      • 2014-08-26
      相关资源
      最近更新 更多