django rest框架中的分块传输编码(nginx + gunicorn)

时间:2014-01-10 11:00:21

标签: django http-headers icalendar django-rest-framework transfer-encoding

我使用Django Rest Framework构建了一个API,用于从我的django模型中提供骰子。 Feed内容已经过验证,适用于我测试过的所有日历应用程序,除了iOS上的iCal 。如果复制/粘贴,iO上的iCal将接受内容,但不接受从网址导入。

我怀疑这个问题的原因是http-header: transfer-encoding:chunked

我正在试图找出传输被分块的原因,并查看修复此功能是否允许iOS读取Feed。

以下是一些简化的代码:

渲染

from rest_framework import renderers

class ICALRenderer(renderers.BaseRenderer):
   media_type = 'text/html'
   format = 'ical'
   charset = 'utf-8'

   def render(self, data, media_type=None, renderer_context=None):
      blob = tools.ical_generator(data, 'My calendar name', 'My calendar description')
      return blob

tools.ical_generator

def ical_generator(events=[], calname='', caldesc=''):
    cal = vobject.iCalendar()
    # build header
    # iterate over events 
    # build footer
    icalstream = cal.serialize()
    return icalstream

note-1:执行 wget 时,只会显示ical_generator中的标题页脚,并且转移将无法完成但无限期地“挂”。

note-2:API也用于其他目的而不是ical feed,在其他情况下,http-header 分块。

1 个答案:

答案 0 :(得分:0)

使用内容类型:文字/日历,iOS上的iCal会吃掉它。

text / html和text / plain是我测试过的所有其他验证工具所允许的,所以看起来iOS非常挑剔......